我需要从两个不同且不相关的表中获取两列,有两种方法可以做到这一点:
发送2个单独的查询:
SELECT * FROM table_a WHERE id = "";
SELECT * FROM table_b WHERE id = "";
发送1个查询:
SELECT a.*, b.*
FROM table_a AS a, table_b AS b
WHERE a.id = "" AND b.id = "";
更新:
ID
查询,因此每张表只有1个结果答案 0 :(得分:2)
您提到的两种方式都可能会返回不同的结果集,这取决于您表中的数据。
但是如果你确定每个查询只返回单行,那么
两个单独的查询比加入
更好SELECT * FROM table_a WHERE id = "";
SELECT * FROM table_b WHERE id = "";
您也可以使用以下内容
SELECT * FROM table_a WHERE id = ""
UNION
SELECT * FROM table_b WHERE id = "";
从性能的角度来看,加入总是代价高昂
现在考虑一下你的查询(它如何返回不同数量的记录)
SELECT a.*, b.*
FROM table_a AS a, table_b AS b
WHERE a.id = "" AND b.id = "";
假设table_a中有2行,其中id =“” table_b中有3行,其中id =“”
然后,如果此连接查询(2 X 3 = 6),DB将返回结果集中的6行。虽然在上面提到的#1中,DB将只返回5行(2 + 3)
同样,结果集中的列数也会有所不同 如果table_a中有2列,table_b中有2列 然后 方式#1将仅包含结果集中的2列 在方式#2中,结果集中将有4列(每个表中有2列)