回答

收藏

停止SQL在JOIN中两次返回相同的结果

技术问答 技术问答 295 人阅读 | 0 人回复 | 2023-09-12

我已经联合了几个表来获取我想要的数据,但是由于我是SQL的新手,所以我不知道如何停止多次返回数据。4 n' E  m. e1 b+ z% w: [- [
她是SQL语句;
, ]9 s% A5 @, nSELECT
- ?  P2 t1 c* ], b, T   T.url," A3 j! E8 r5 p' b% u* ?$ n
   T.ID,
; S( o/ b' M# E8 I   S.status,7 T$ U/ P; O. j# F2 o
   S.ID,
! A0 _: C; a" h   E.action,
7 z7 e$ }: z  V8 T. t8 n   E.ID,. Z3 K. J7 |+ z! N
   E.timestamp- b/ A7 s+ |1 W) d9 [
FROM tracks T, status S, events E. D  [8 `4 \- S2 m" l. a
WHERE S.ID AND T.ID = E.ID5 C) u# a6 ^3 P# v( }/ z
ORDER BY E.timestamp DESC
: l, y# b. Z, t) f( |返回的数据是这样的:% q7 |9 y- U6 V# v
+----------------------------------------------------------------+7 w; I  o7 F7 g2 W$ c( s
| URL | ID | Status | ID | action               | ID | timestamp |
9 T% Q  t3 k2 @+----------------------------------------------------------------+
; u# L6 t4 d, V7 U4 q! r1 H| T.1 | 4  | hello  | 4  | has uploaded a track | 4  | time      |+ o2 u- C( P2 j! _. D. j9 ^  W
| T.2 | 3  | bye    | 3  | has some news        | 3  | time      |
% W$ _3 F& W- P| t.1 | 4  | more   | 4  | has some news        | 4  | time      |
' U, [& Y$ i2 }3 a/ S# K# N/ J+----------------------------------------------------------------+0 X8 ~. G: t: J$ ]; l4 q$ D
这是一个非常基本的示例,但它概述了发生的情况。如果您查看第三行,则在状态不同时,URL会重复。
4 q$ j$ i/ h: G# G, i7 ?1 F这就是我想发生的事情;
; m, W; L" {' n. x6 T4 W+-------------------------------------------------------+
$ Z1 l* N1 i3 O- G/ B8 W0 V& z| URL or Status | ID | action               | timestamp |. C, B; v! V  m
+-------------------------------------------------------+7 c7 o& b5 s+ k7 ^8 J5 A
| T.1           | 4  | has uploaded a track | time      |1 _. t" q' H" k5 {( s5 L# X" L5 w# h
| hello         | 3  | has some news        | time      |
* k5 n3 ]* [1 L- @# Q/ F| bye           | 4  | has some news        | time      |; ]$ ^' U& r- ~" ?8 o
+-------------------------------------------------------+
8 o$ s  ~2 M# h+ U- b/ e请注意,该动作已上传曲目时,将显示url(本例中为T.1)。这个非常重要。事件表中的操作是在状态或音轨插入触发时插入的。如果插入了新轨道,则操作是“已上载轨道”,并且您猜测状态是什么。此时,ID和时间戳也已插入到事件表中。' Q5 V5 b' y+ Y. B3 f  y
注意:查询中 有更多表,实际上还有3个表,但为简单起见,我将其省略。+ Z( E$ i; E; L- E+ p
                8 q3 q' o. r) P; e
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则