1

MySQL に 2 つのテーブルがあります。

table1: ID、タイトル
table2: ID、タイトル

ここで、両方のテーブル内のすべてのタイトルを表示したいと思います。私が抱えている問題は、タイトルフィールドに両方のテーブルに何かが含まれていると、返された値が表示されることです。しかし、これらのテーブルの 1 つが空の場合、別のテーブルでも何も表示されません。
これは私のクエリです:

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

ここで何が問題なのですか?

4

3 に答える 3

2

CROSSJOINの代わりにLEFTJOINを使用する必要があります(これは、ここでコンマ演算子が行うことです)。

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 に答える