[SQL]将子查询作为查询条件
生活随笔
收集整理的這篇文章主要介紹了
[SQL]将子查询作为查询条件
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
描述
如果需要按照某一些特定條件篩選數(shù)據(jù),一般用where或者是group by就可以解決。但是有一類問題比較繞,需要輸出的是符合條件的所有的某一個(gè)值對應(yīng)的所有的數(shù)據(jù)。
如例:設(shè)每個(gè)學(xué)生可能會(huì)有很多門課程,輸出所有課程分?jǐn)?shù)加起來大于500的學(xué)生的所有課程。這個(gè)問題和一般的問題不太一樣,一般的按條件篩選都是要求找到所有課程分?jǐn)?shù)加起來大于500的學(xué)生。所以,在這里需要用group這個(gè)功能生成一個(gè)子查詢,將子查詢作為一個(gè)條件參數(shù)而不是結(jié)果。
案例
牛客網(wǎng)上的一個(gè)例子很不錯(cuò):
這個(gè)問題的一個(gè)典型解決方式就是用子查詢作為篩選參數(shù)
select * from order_info where user_id in ( select user_id from order_info WHERE status='completed' and date>'2025-10-15' and product_name in ('C++','Python','Java') GROUP BY user_id HAVING count(*)>1) status='completed' and date>'2025-10-15' and product_name in ('C++','Python','Java') ORDER BY id;為什么篩選條件要寫兩遍?因?yàn)樵谧硬樵冎泻Y選出來的user_id符合篩選要求,并不代表user_id所對應(yīng)的內(nèi)容也符合要求。比如,user_id對應(yīng)的課程完成情況就有可能是未完成。所以需要在子查詢篩選完后,再篩選一次。
總結(jié)
以上是生活随笔為你收集整理的[SQL]将子查询作为查询条件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: little endian c语言,c语
- 下一篇: 打破双亲委派么,怎么打破_打破统一垃圾收