繁体   English   中英

具有INNER JOIN的MySQL SQL语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM