我在MySQL中有2个表。
table1:id,title
table2:id,title
现在,我希望看到两个表中的所有标题。我遇到的问题是,如果 title 字段包含两个表中的任何内容,我可以看到返回的值。但是,如果其中一个表是空的,即使是另一个表,我也看不到任何东西 这是我的问题:
SELECT
t1.title as 'title1',
t2.title as 'title2'
FROM
table1 t1,
table2 t1
这里有什么问题?
答案 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`;