/ / INNER JOINのMySQL SQLステートメント - mysql、sql、inner-join

INNER JOINを使用したMySQL SQLステートメント - mysql、sql、inner-join

私は次のSQL文を持っています

SELECT be.*, it.order_number
FROM songs AS be

INNER JOIN
(
SELECT song_id, order_number
FROM items
WHERE order_status = 1
) it
ON be.id = it.song_id

INNER JOIN orders AS or
ON it.order_number = or.order_number

WHERE be.active = 0

なぜこの文が結果をもたらさないのか分かりません。次の行を削除すると、

INNER JOIN orders AS or
ON it.order_number = or.order_number

結果が出るようですが、 order_number は、 orders テーブル - それは明らかに構文が間違っていますが、ここからどこに行くのか分かりません。ヘルプをよろしくお願いいたします。

回答:

回答№1は1

この特定の例における問題は、 or クエリの中には予約語があります。あなたが望むならそれを使うことができますが、そういう言葉を引用する必要があります

SELECT be.*, it.order_number
FROM songs AS be

INNER JOIN
(
SELECT song_id, order_number
FROM items
WHERE order_status = 1
) it
ON be.id = it.song_id

INNER JOIN orders AS "or"
ON it.order_number = "or".order_number

WHERE be.active = 0

一般的には、読みやすくするために、そのような名前は避けてください。引用するかエスケープする必要がある場合は、おそらく悪い名前です。