MySQL-不显示ID使用中的任何行
我只需要显示不使用特定ID的值。 我有两张桌子 表1MySQL-不显示ID使用中的任何行,mysql,mariadb,Mysql,Mariadb,我只需要显示不使用特定ID的值。 我有两张桌子 表1 id_xx 1 2 3 4 5 表2 id | id_xx 3 | 3 4 | 3 4 | 1 我需要这个结果为例。我说哪个结果来自我需要的ID 我需要这个结果,其中id=3 id_xx 1 2 4 5 或者其中id=4 id_xx 2 4 5 或者其中id=1 1 2 3 4 5 您可以将表1与表2保持连接,并在连接的ON子句中应用筛选器,然后对不匹配的记录进行筛选: SELECT t1.id_xx FROM tabl
id_xx
1
2
3
4
5
表2
id | id_xx
3 | 3
4 | 3
4 | 1
我需要这个结果为例。我说哪个结果来自我需要的ID
我需要这个结果,其中id=3
id_xx
1
2
4
5
或者其中id=4
id_xx
2
4
5
或者其中id=1
1
2
3
4
5
您可以将表1与表2保持连接,并在连接的ON子句中应用筛选器,然后对不匹配的记录进行筛选:
SELECT t1.id_xx
FROM table1 t1
LEFT JOIN table2 t2 ON t2.id_xx = t1.id_xx AND t2.id = ?
WHERE t2.id IS NULL
您可以用需要检查的id替换问号
:
给定t2.id=3:
给定t2.id=4:
另一种方法是使用: 选择t1.id\u xx 从表1中取t1 如果不存在,请选择1 从表2中取t2 其中t2.id=?-您的输入id在这里 t2.id_xx=t1.id_xx 如果您有大型表,并且担心这些查询的性能,则可以定义以下索引: 对于相关子查询,在表2中定义复合索引id,id_xx。 更改表2,添加INDEXid,id_xx;
假设id_xx已经是表1中的主键。因此,您不需要在那里定义任何索引。如果没有,那么你可以在上面定义一个索引。这似乎也产生了预期的结果,为什么它被否决了?@GMB谢谢。。不要介意。。如果有人得到了施虐狂的快感,让他/她:-
| id_xx |
| ----- |
| 1 |
| 2 |
| 4 |
| 5 |
| id_xx |
| ----- |
| 2 |
| 4 |
| 5 |