移植到 MySQL-子查询问题

作者:vkvi 来源:ITPOW(原创) 日期:2009-12-21

您可能会遇到不支持子查询的 SQL 语句,比如下面的:

select * from tbl1 where id in (select id from tbl2 where id>3)

解决方法一是可以把子查询拆分为多个简单的查询。

dim mySqlIn
mySqlIn = "0"
sql = "select id from tbl2 where id>3"
rs.Open sql, conn, 1, 1
do while not rs.eof
    mySqlIn = mySqlIn & "," & rs("cateID")
    rs.MoveNext
loop
rs.Close

sql = "select * from tbl1 where id in (" & mySqlIn & ")"

上面 mySqlIn 总是带一个 0,以避免 tbl2 中无符合条件的记录时,后面的 sql 语句出错。因为一般情况下,我们不用 0 作 id,所以这里使用 0。

解决方法二是可以使用关联查询。

select tbl1.* from tbl1 inner join tbl2 on tbl1.id=tbl2.id where tbl2.id>3

如果 tbl1.* 这种写法不正确,那么只好一个字段一个字段地写出来了。

相关阅读

相关文章