赞
踩
查询:
1.在SQL中使用EXISTS
从TEST_TB01中查询出在TEST_TB02中存在的记录,关联条件是两个表的id相等。
SELECT
aa.sensor_id,aa.part_id,aa.flag
FROM
TEST_TB01 aa
WHERE EXISTS
(SELECT 1 FROM
TEST_TB02 bb
WHERE aa.sensor_id = bb.sensor_id);
2.在SQL中使用NOT EXISTS
SELECT
aa.sensor_id,aa.part_id,aa.flag
FROM
TEST_TB01 aa
WHERE NOT EXISTS
(SELECT 1 FROM
TEST_TB02 bb
WHERE aa.sensor_id = bb.sensor_id);
3.在SQL中使用多个NOT EXISTS
SELECT
aa.sensor_id,aa.part_id,aa.flag
FROM
TEST_TB01 aa
WHERE NOT EXISTS
(SELECT 1 FROM
TEST_TB02 bb
WHERE aa.sensor_id = bb.sensor_id)
AND NOT EXISTS
(SELECT 1 FROM
TEST_TB03 cc
WHERE aa.sensor_id = cc.sensor_id);
4.在SQL中使用多个EXISTS
SELECT
aa.sensor_id,aa.part_id,aa.flag
FROM
TEST_TB01 aa
WHERE EXISTS
(SELECT 1 FROM
TEST_TB02 bb
WHERE aa.sensor_id = bb.sensor_id)
AND EXISTS
(SELECT 1 FROM
TEST_TB03 cc
WHERE aa.sensor_id = cc.sensor_id);
5.在SQL中使用NOT EXISTS和EXISTS
SELECT
aa.sensor_id,aa.part_id,aa.flag
FROM
TEST_TB01 aa
WHERE EXISTS
(SELECT 1 FROM
TEST_TB02 bb
WHERE aa.sensor_id = bb.sensor_id)
AND NOT EXISTS
(SELECT 1 FROM
TEST_TB03 cc
WHERE aa.sensor_id = cc.sensor_id);
6、在DELETE语句中使用EXISTS
DELETE FROM
TEST_TB01 aa
WHERE EXISTS
(SELECT 1 FROM
TEST_TB02 bb
WHERE aa.sensor_id = bb.sensor_id);
7、在UPDATE语句中使用EXISTS
UPDATE TEST_TB01 aa
SET (aa.part_id, aa.flag) =
(SELECT bb.part_id, bb.flag
FROM TEST_TB02 bb
WHERE aa.sensor_id = bb.sensor_id)
WHERE EXISTS
(SELECT 1 FROM TEST_TB02 cc
WHERE aa.sensor_id = cc.sensor_id);
In 语法
8、使用列值列表进行匹配:
SELECT 字段名
FROM 数据表
WHERE 字段名 IN(数据值_1,数据值_2,…)
9、使用子查询返回多个结果进行匹配:
SELECT *
FROM 表名
WHERE 列名 IN (SELECT 列名 FROM 表名 WHERE 条件)
10、使用子查询返回单个结果进行匹配:
SELECT *
FROM 表名
WHERE 列名 IN (SELECT 列名 FROM 表名 WHERE 条件 LIMIT 1)
11、使用多个列进行匹配:
SELECT *
FROM 表名
WHERE (列名1, 列名2) IN (SELECT 列名1, 列名2 FROM 表名 WHERE 条件)
12、IN与EXISTS的区别:
IN 运算符用于比较单个值或列与一组值,而 EXISTS 运算符用于检查子查询是否返回结果。
IN 运算符将整个列表与主查询比较,而 EXISTS 运算符只需找到符合条件的一行即可。
IN 运算符适用于静态数据列表,而 EXISTS 运算符适用于动态或复杂的子查询。
要选择使用 IN 还是 EXISTS,取决于查询的需求和性能。通常来说,EXISTS 运算符在处理大量数据时效率更高,因为它可以提前停止搜索一旦找到匹配的结果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。