如果表是空的,为什么MySQL不返回任何内容?

时间:2012-08-03 04:36:23

标签: mysql select

我在MySQL中有2个表。

  

table1:id,title
    table2:id,title

现在,我希望看到两个表中的所有标题。我遇到的问题是,如果 title 字段包含两个表中的任何内容,我可以看到返回的值。但是,如果其中一个表是空的,即使是另一个表,我也看不到任何东西 这是我的问题:

SELECT
    t1.title as 'title1',
    t2.title as 'title2'
FROM
    table1 t1,
    table2 t1

这里有什么问题?

3 个答案:

答案 0 :(得分:2)

你需要使用LEFT JOIN而不是CROSS JOIN(这是逗号运算符在这里所做的)。

http://dev.mysql.com/doc/refman/5.0/en/join.html

您使用表1中每一行与表2中的每一行匹配的逗号连接。由于表2中没有行,因此它不可能匹配表1中的任何行,因此您得不到结果。如果要始终查看表1中的结果,则必须使用LEFT JOIN,它从表1中提取所有行,并从表2中提取任何匹配的行。如果要查看行,则无论哪个表拥有它们,您可以使用完全外部联接,MySQL不直接支持但可以模拟(如果您需要示例,请参阅Google)。

答案 1 :(得分:2)

使用union

Select title from t1
Union 
Select title from t2

答案 2 :(得分:1)

您需要使用UNION。以这种方式进行查询:

SELECT `table1`.`title` as `title1`
UNION
SELECT `table2`.`title` as `title2`;