我已经将几个表连接在一起以获取我想要的数据,但由于我是SQL新手,我无法弄清楚如何停止多次返回数据。停止SQL在JOIN中返回两次相同的结果
她的SQL语句;
SELECT
T.url,
T.ID,
S.status,
S.ID,
E.action,
E.ID,
E.timestamp
FROM tracks T, status S, events E
WHERE S.ID AND T.ID = E.ID
ORDER BY E.timestamp DESC
返回的数据是这样的;
+----------------------------------------------------------------+
| URL | ID | Status | ID | action | ID | timestamp |
+----------------------------------------------------------------+
| T.1 | 4 | hello | 4 | has uploaded a track | 4 | time |
| T.2 | 3 | bye | 3 | has some news | 3 | time |
| t.1 | 4 | more | 4 | has some news | 4 | time |
+----------------------------------------------------------------+
这是一个非常基本的例子,但确实概述了会发生什么。如果您查看第三行,则在有不同状态时重复该URL。
这是我希望发生的;
+-------------------------------------------------------+
| URL or Status | ID | action | timestamp |
+-------------------------------------------------------+
| T.1 | 4 | has uploaded a track | time |
| hello | 3 | has some news | time |
| bye | 4 | has some news | time |
+-------------------------------------------------------+
请注意,当动作已上载曲目时,会显示网址(本例中模拟曲目为T.1)。这个非常重要。事件表中的动作插入状态或轨道插入的触发器中。如果插入新曲目,则操作是“已上传曲目”,并且您猜测它的状态。此时,ID和时间戳也被插入到事件表中。
注意:有更多的表格进入查询,其实有3个,但为简单起见,我已将其留出。
由于您是SQL新手,您应该知道隐式连接是SQL反模式,您应该学会使用显式连接。 – HLGEM