なぜこのSQLクエリはusers_warningsに行しかない場合にのみ結果を表示しますか?クエリで結果が返されないのはなぜですか?
SELECT
u.id,
uw.warning
FROM
users u
INNER JOIN users_warnings uw ON (
u.id = uw.uID
)
LIMIT 21
私はすべてのユーザーを表示したいと思いますが、users_warningsに「warning」という列も表示します。
なぜこのSQLクエリはusers_warningsに行しかない場合にのみ結果を表示しますか?クエリで結果が返されないのはなぜですか?
SELECT
u.id,
uw.warning
FROM
users u
INNER JOIN users_warnings uw ON (
u.id = uw.uID
)
LIMIT 21
私はすべてのユーザーを表示したいと思いますが、users_warningsに「warning」という列も表示します。
INNER JOIN
だけで何かを返します。ように、左結合のためのインナー参加ご
SELECT u.id, uw.warning FROM users u
LEFT JOIN users_warnings uw ON (u.id = uw.uID)
LIMIT 21
inner join
を使用しているため、結合された表に行が存在する必要があります。以下試してみてください。両方のテーブルにデータがある場合
SELECT
u.id,
uw.warning
FROM
users u
LEFT JOIN users_warnings uw ON (
u.id = uw.uID
)
LIMIT 21
変更:
SELECT u.id, uw.warning FROM users u
LEFT JOIN users_warnings uw ON (u.id = uw.uID)
LIMIT 21
SELECT
u.id,
IFNULL(uw.warning,'') warning
FROM
(SELECT id FROM users LIMIT 21) u
LEFT JOIN users_warnings uw
ON u.id = uw.uID
;
LEFT JOIN
代わりにしてみてくださいJOIN(高速クエリ)を試行する前に最初の21人のユーザーを取得するクエリ
これは外部結合ではなく、 – kralco626