SQLite进阶-14.子查询

本文详细探讨了SQLite中的子查询应用,包括在SELECT、INSERT、UPDATE和DELETE语句中的使用。子查询作为嵌套查询,常用于在WHERE子句中设置条件,以精确筛选所需数据。遵循括号包裹、单列选择、不适用ORDER BY等规则,子查询能有效增强SQLite操作的灵活性和精确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

子查询

子查询或内部查询或嵌套查询是在另一个SQLite查询内嵌入在WHERE子句中的查询。
使用子查询返回的数据将被用在主查询中作为条件,以进一步限制要检索的数据。
子查询可以与SELECT、INSERT、UPDATE和DELETE语句一起使用,可伴随着使用运算符如=、<、>、>=、<=、IN、BETWEEN等。

子查询必须遵循的几个规则:

  • 子查询必须用括号括起来。
  • 子查询在SELECT子句只能有一个列,除非在主查询中有多列,与子查询的所选列进行比较。
  • ORDER BY不能用在子查询中,虽然主查询可以使用ORDER BY。可以在子查询中使用GROUP BY,功能与ORDER BY相同。
  • 子查询返回多余一行,只能与多值运算符一起使用,如IN运算符。
  • BETWEEN运算符不能与子查询一起使用,但是,BETWEEN可在子查询内使用。

SELECT语句中的子查询

-- 语法
SELECT * FROM table_name1[, table_name2]
    WHERE column_name OPERATOR
    (
        SELECT column_name1[, column_name2]
        FROM table_name[, table_name2]
        WHERE [condition]
    );

-- 实例
SELECT * FROM link_men
    WHERE ID IN (
        SELECT ID FROM link_men
        WHERE SALARY > 5000
    );

INSERT语句中的子查询

-- 语法
INSERT INTO table_name [ (column1 [, column2 ]) ]
    SELECT [ (column1 [, column2 ]) ]
    FROM table_name1[, table_name2]
    WHERE column_name OPERATOR
    (
        SELECT column_name1[, column_name2]
        FROM table_name1[, table_name2]
        WHERE [condition]
    );

-- 实例
INSERT INTO link_men
    SELECT * FROM link_men
    WHERE ID IN (
        SELECT ID FROM link_men
        WHERE SALARY > 5000
    );

UPDATE语句中的子查询

-- 语法
UPDATE table_name
SET column_name = new_value
    WHERE column_name OPERATOR
    (
        SELECT column_name1[, column_name2]
        FROM table_name1[, table_name2]
        WHERE [condition]
    );

-- 实例
UPDATE link_men
SET SALARY = SALARY * 0.50
    WHERE AGE IN (
        SELECT AGE FROM link_men
        WHERE AGE > 25
    );

DELETE语句中的子查询

-- 语法
DELETE FROM table_name
    WHERE column_name OPERATOR
    (
        SELECT column_name1[, column_name2]
        FROM table_name1[, table_name2]
        WHERE [condition]
    );

-- 实例
DELETE FROM link_men
    WHERE AGE IN (
        SELECT AGE FROM link_men
        WHERE AGE > 25
    );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值