当我使用子查询时,我遇到了这种情况。谁能解释一下哪一种是有效的,以及案例1比案例2更好的情况,反之亦然。
在案例1中,我使用了3个子查询,在总共4个select操作中,它需要执行。
案例1
SELECT * FROM t
WHERE Cid = (SELECT cid FROM s WHERE id = $sid)
AND Bid = (SELECT bid FROM s WHERE id = $sid)
AND Eid = (SELECT eid FROM s WHERE id = $sid)在案例2中,我从数据库中检索了一些值,并再次执行mysql查询。在这里,mysqli_query被执行了两次,但是在第1种情况下,我们只使用了一次。
案例2
$res = mysqli_query($con,"SELECT cid,bid,eid FROM s WHERE id = $sid");
$row = mysqli_fetch_array($r,MYSQL_ASSOC);
"SELECT * FROM t WHERE Cid = $row[cid] AND Bid = $row[bid] AND Eid = $row[eid]";或者其他更好的解决方案?任何帮助都是非常感谢的。谢谢
发布于 2014-04-10 18:28:10
都不是。当您可以使用JOIN时,您不需要子查询。
SELECT t.* FROM t
JOIN s ON t.Cid = s.cid AND t.Bid = s.bid AND t.Eid = s.eid
WHERE s.id = $sidhttps://stackoverflow.com/questions/22995993
复制相似问题