簡體   English   中英

與sqlite中子查詢的結果比較

[英]Comparison with results from sub-query in sqlite

這是代碼:

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);

也可以使用相關子查詢 ,該子查詢可以為外部查詢中的每一行返回不同的結果:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM