1

我在 MySQL 中有 2 个表。

table1: id, 标题
table2: id, 标题

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

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

这里有什么问题?

4

3 回答 3

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)。

于 2012-08-03T04:40:02.270 回答
2

使用联合

Select title from t1
Union 
Select title from t2
于 2012-08-03T04:43:07.367 回答
1

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

SELECT `table1`.`title` as `title1`
UNION
SELECT `table2`.`title` as `title2`;
于 2012-08-03T04:44:05.597 回答