如何理解这个查询?
How to understand this query?
SELECT DISTINCT
...
...
...
FROM Reviews Rev
INNER JOIN Reviews SubRev ON Subrev.W_ID=Rev.ID
WHERE Rev.Status='Approved'
这是我一天来一直试图理解的长查询的一小部分。连接发生了什么?评论 table 似乎以不同的别名与自身相连。为什么这样做?它实现了什么?此外,评论 table 的 ID 字段对于仍被选择和返回的条目为空。这是正确的,但我不明白如果 W_ID 字段不为空,那怎么会发生。
它允许您将 table 中的一行连接到 table 中的另一行。
我都看到过这样做,并且自己也使用过它,以防您可能在这些行之间有关系。
Real-world 示例:
- 记录的旧版本和新版本
- 某种层级关系(例如,如果 table 包含人的记录,则可以记录某人是其他人的 parent)。可能还有很多其他可能的用例。
SQL 允许您创建一个外键,该外键在同一 table.
中的两个不同列之间关联
SELECT DISTINCT
...
...
...
FROM Reviews Rev
INNER JOIN Reviews SubRev ON Subrev.W_ID=Rev.ID
WHERE Rev.Status='Approved'
这是我一天来一直试图理解的长查询的一小部分。连接发生了什么?评论 table 似乎以不同的别名与自身相连。为什么这样做?它实现了什么?此外,评论 table 的 ID 字段对于仍被选择和返回的条目为空。这是正确的,但我不明白如果 W_ID 字段不为空,那怎么会发生。
它允许您将 table 中的一行连接到 table 中的另一行。
我都看到过这样做,并且自己也使用过它,以防您可能在这些行之间有关系。
Real-world 示例:
- 记录的旧版本和新版本
- 某种层级关系(例如,如果 table 包含人的记录,则可以记录某人是其他人的 parent)。可能还有很多其他可能的用例。
SQL 允许您创建一个外键,该外键在同一 table.
中的两个不同列之间关联