我已经将几个表连接在一起以获取我想要的数据,但是由于我是 SQL 新手,所以我无法弄清楚如何停止多次返回数据。
她的 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 |
+-------------------------------------------------------+
请注意,当操作上传曲目时,会显示 url(在本例中模拟的是 T.1)。这个非常重要。在触发状态或轨道插入时插入事件表中的操作。如果插入了新曲目,则操作是“已上传曲目”,您猜它是什么状态。此时,ID 和时间戳也被插入到事件表中。
注意:查询中有更多表,实际上还有 3 个,但为了简单起见,我将它们省略了。