[英]MySQL SQL statement with 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
表中-因此它的语法显然不正确,但是我不确定从何处去? 感谢帮助。
在此特定实例中的问题是查询中的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
通常,为了便于阅读,我会避免使用此类名称。 如果您必须引用它或将其转义,则可能是一个不好的名字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.