使用更多子查询

时间:2014-04-10 18:22:27

标签: php mysql sql

当我使用子查询时,我遇到了这种情况。任何人都可以向我解释哪一个是有效的,以及案例1优于案例2的情况,反之亦然。

在案例1中,我使用了3个子查询,总共有4个选择操作,需要执行。

案例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执行了两次,但只有一次我们使用了。

案例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]";

还是其他更好的解决方案?任何帮助是极大的赞赏。感谢

1 个答案:

答案 0 :(得分:2)

都不是。如果可以使用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 = $sid