Mysql 返回左表中除

Mysql 返回左表中除,mysql,sql,Mysql,Sql,我有以下表格 表2\u标签 表\u标签\u更改 我正在尝试从table_label获取所有记录,但table_label_更改的记录除外。before等于table_label.id,table_label.id等于4 所以应该是这样的: 表_label中的所有记录减去“where column”之后的列“where column”之前的列“id”等于4 在这个例子中,我应该得到: ________________ | id | name | |____|___________

我有以下表格 表2\u标签

表\u标签\u更改

我正在尝试从table_label获取所有记录,但table_label_更改的记录除外。before等于table_label.id,table_label.id等于4 所以应该是这样的: 表_label中的所有记录减去“where column”之后的列“where column”之前的列“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
一无所获

我也尝试了左联接,但它返回左表中的所有记录


我怎样才能得到上述回答?

不幸的是,您的问题不清楚,或者您预期的结果不正确,但我认为这可以帮助您: 如果不希望表\u label.id==4,可以将和id 4添加到表\u label的where条件中

挑选* 从表\u标签tl
WHERE id not in SELECT after FORM table_label_changes WHERE before==4

您的输出是否还应包括该输入行集的6、NAME_3?如果没有,为什么不呢?@MichaelBerkowski没有,因为我需要表_label中的记录减去'after'列中的id,其中'before'等于4。您应该编辑上面的内容以澄清这些关系。您没有迹象表明您当前的描述中涉及after。
 ________________
| 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