MYSQL查询:指定数值A表中B表没有对应数值
MYSQL查询:指定数值A表中B表没有对应数值
在A表根据指定的arrange列的33743439, 33734907,33563462, 33563939等数值查询数据,连接B表,最后查询的结果只返回A表指定列中B表arrange列没有对应记录的数据
SELECT tf.*
FROM A tf
WHERE tf.arrange IN (33448063,
33448154,
33743439,
33734907)
AND NOT EXISTS (
SELECT 1
FROM B tfi
WHERE tfi.arrange = tf.arrange
);
NOT EXISTS在mysql的使用
在MySQL中,NOT EXISTS
子句通常与子查询一起使用,用于测试子查询是否返回任何行。如果子查询没有返回行,即没有任何符合条件的记录,那么EXISTS
条件的结果为FALSE
,而NOT EXISTS
则为TRUE
。这常用于外部查询,以确定是否需要包含或排除某些行。
例:
SELECT * FROM table1 t1 WHERE NOT EXISTS ( SELECT * FROM table2 t2 WHERE t1.id = t2.foreign_id );
在这个例子中,查询从table1
中检索所有记录,但仅当不存在与table1
中的id
相匹配的foreign_id
在table2
中的记录时。如果table2
中有与table1
中的id
相对应的foreign_id
,那么该table1
的记录将不会包含在结果集中。
NOT EXISTS
子句是一种高效的方式来排除那些与其他表存在特定关系的外键记录,因为它通常能够利用索引来优化查询性能。