带有 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 表中 - 所以它显然是不正确的语法,但我不确定该去哪里从这里?感谢您的帮助。

最佳答案

此特定实例中的问题是查询中的 是保留字。如果你愿意,你可以使用它,但你必须引用它,就像这样

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 的 MySQL SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12573850/

相关文章:

php - MySQL表中的多个连接

mysql - 如何在 MySQL 查询中包含表名?

mysql - 根据另一个表中的主键查找设置新列值

sql-server-2008 - 我怎样才能总结一组总和? SQL Server 2008

sql - postgres中的打印系列

c# - 在来自同一 MySQL 服务器的不同数据库的两个表中执行连接查询

sql - 根据规则更新列值

mysql - 我怎样才能找到一个列是否在 mysql 中是 auto_increment?

MySQL 8 : ER_NOT_SUPPORTED_AUTH_MODE

mysql - MySQL 中的内连接选择