我有以下表格结构
的 table_label
________________
| 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.id 和的记录除外table_label.id 等于 4
所以它应该是这样的:
来自 table_label 的所有记录减去后列中的ID,其中“之前”列等于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
,但它从左表中返回所有记录。
我如何获得上述回复?
答案 0 :(得分:1)
不幸的是,您的问题不明确,或者您预期的结果不正确,但我认为这可以帮助您: (如果你不想要table_label.id == 4,你可以添加"和id<> 4"到table_label的where条件)
SELECT * FROM table_label tl id不在(FORM table_label_changes之前的SELECT = = 4之前的WHERE)