在MySQL中一个表为空时选择多个表

时间:2010-07-03 11:02:01

标签: sql mysql

我正在尝试

SELECT * FROM a, b

但是,如果其中一个表为空,则不会返回任何内容。如何做到这一点,即使另一个是空的,它也会返回'a'?

5 个答案:

答案 0 :(得分:21)

from子句中使用两个表在功能上等同于cross join

select  *
from    A
cross join
        B

这将为B中的每一行返回一行A.当B为空时,结果也为空。您可以使用left join来解决此问题。使用left join,即使其中一个表为空,也可以返回行。例如:

select  * 
from    A
left join  
        B
on      1=1

由于条件1=1始终为真,因此它与cross join类似,但它也适用于空表。

答案 1 :(得分:1)

SELECT * FROM a LEFT JOIN b ON a.ID = b.ID

即使b为空,也会返回所有内容。

答案 2 :(得分:1)

你应该进行左连接。

喜欢这个

SELECT *
FROM A
 LEFT JOIN B ON A.ID = B.ID

然后你会收到A中的行和B中的相应行(如果存在)。

答案 3 :(得分:1)

SELECT a.*, b.* FROM a LEFT JOIN b ON a.id = b.id 

在此示例中,id只是连接键的示例名称

答案 4 :(得分:0)

上面提到的查询显示两个表的连接,如果包含2个记录,b包含7个记录,则显示7 * 2 = 14个记录。在您的情况下,其中一个表为空(有0个记录),它不会显示任何数据。如果您仍想显示数据并且表没有任何关系,则需要检查两个表的计数是否大于0.否则只显示一个非空表的记录。