gpt4 book ai didi

sql - 与sqlite中子查询的结果比较

转载 作者:行者123 更新时间:2023-12-03 19:39:56 26 4
gpt4 key购买 nike

这是代码:

SELECT * FROM COMPANY WHERE SALARY > 40000;


4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
8 Kitos 31 90000.0

SELECT * FROM COMPANY
WHERE AGE < (SELECT AGE FROM COMPANY WHERE SALARY > 40000);

3 Teddy 23 Norway 20000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0


当子查询返回多行时,该如何工作?在此示例中,我希望最后一个查询产生的员工年龄小于22岁(子查询中的最小值),显然这行不通。

最佳答案

如果子查询未完全返回一个结果,则大多数数据库都会引发错误。 SQLite不会,但只使用返回的第一行(或NULL)(隐含LIMIT 1)。
没有ORDER BY不能保证SELECT结果的顺序,因此结果将是随机的。

如果要使用某些特定记录,则必须确保SELECT准确返回该记录,通常使用MIN / MAX或ORDER BY:

SELECT ...
FROM Company
WHERE Age < (SELECT MIN(Age)
FROM Company
WHERE Salary > 40000);

SELECT ...
FROM Company
WHERE Age < (SELECT Age
FROM Company
WHERE Salary > 40000
ORDER BY Age
LIMIT 1);


也可以使用 correlated subquery,它可以为外部查询中的每一行返回不同的结果:

SELECT ...
FROM Company
WHERE Age < (SELECT Age
FROM Company AS C2
WHERE C2.ID = Company.ManagerID);

关于sql - 与sqlite中子查询的结果比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31031539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com