您可能会遇到不支持子查询的 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.* 这种写法不正确,那么只好一个字段一个字段地写出来了。
相关阅读