簡體   English   中英

返回左表中的所有記錄,除了

[英]Return all records from left table except

我有以下表格結構
表標簽

 ________________
| id | name      |   
|____|___________|
|  4 |  NAME_1   |
|____|___________|
|  5 |  NAME_2   |
|____|___________|
|  6 |  NAME_3   |
|____|___________|
|  7 |  NAME_4   |
|____|___________|
|  8 |  NAME_5   |
|____|___________|
|  9 |  NAME_6   |
|____|___________|

table_label_changes

 __________________________
| id | before    | after   |
|____|___________|_________|
|  4 |     4     |    5    |
|____|___________|_________|
|  5 |     4     |    6    |
|____|___________|_________|

我試圖從table_label 中獲取所有記錄,除了table_label_changes.before等於table_label.idtable_label.id等於4 的記錄
所以它應該是這樣的:
table_label 中的所有記錄減去列 ' after ' 中的 ID,其中列 ' before ' 等於 4
在這個例子中,我應該得到:

 ________________
| id | name      |   
|____|___________|
|  7 |  NAME_4   |
|____|___________|
|  8 |  NAME_5   |
|____|___________|
|  9 |  NAME_6   |
|____|___________|

我試過了:

SELECT *
FROM table_label tl
JOIN table_label_changes tc
  ON tl.id != tc.before
 AND tl.id = 4

什么都不回

我也試過LEFT JOIN ,但它返回左表中的所有記錄。

我怎樣才能得到上面的回應?

不幸的是,您的問題不清楚或您期望的結果不正確,但我認為這可以幫助您:(如果您不想要 table_label.id == 4,您可以將“and id <> 4”添加到 where 條件table_label)

SELECT * FROM table_label tl WHERE id not in (SELECT after FORM table_label_changes WHERE before == 4)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM