SQL 子查询语句简单示例

SQL 中的 SELECT 命令不仅能够直接用来查询数据库中的数据,还能够嵌入到 WHERE 中作为子查询语句,或者将查询结果插入到另一个表中。

将子查询用于 WHERE 子句

子查询能够与 SELECT、INSERT、UPDATE 和 DELETE 语句一起使用。

下面以 SELECT 语句作为示例:

SELECT id, name
FROM table1
WHERE id in (
    SELECT id
    FROM table2);

在上面所给的例子中,我们将子查询的结果作为一个集合,使用 in 成员测试运算来筛选出同时存在于 table1table2 中的 id

注意:WHERE 子句中的子查询必须使用括号包围起来。待比较的数据应该与子查询的结果具有相同的列数。

子查询的结果为单条记录,则可以使用 =、<、>、>=、<=、IN、BETWEEN 等运算符。例如:

SELECT id, name FROM table1
WHERE id = (
    SELECT id
    FROM table2
    WHERE name = "xxx");

或者多列:

SELECT id, name FROM table1
WHERE (name, age) = (
    SELECT name, age
    FROM table2
    WHERE id = 3);

当查询结果为多条记录时,只能使用 in 成员测试运算。

例如:

SELECT email
FROM table1
WHERE id in (
    SELECT id
    FROM table2);

将子查询结果插入表中

我们可以将一个表的查询结果作为数据插入到另一个表中,例如:

INSERT INTO newtable
    SELECT * FROM oldtable
    WHERE id > 100;

还可以选择特定的列:

INSERT INTO newtable (id, name)
    SELECT id, name FROM oldtable
    WHERE id < 50;

我们注意到,这里的子查询语句不需要使用括号包围。

相关文章

Loading Likes...

发表评论

电子邮件地址不会被公开。 必填项已用*标注