我有一個表User
和Company
。用戶記錄是公司記錄的孩子,即用戶表具有指示用戶屬於哪個公司的列parent_company_id
。在外部查詢的where子句中使用select column子查詢的結果?
我要選擇公司的記錄,對如何關聯的用戶記錄的企業多有詹姆斯的名字進行的計數一起,只有在那計數> 0
這是我的第一個念頭:
SELECT
c.name,
(SELECT
COUNT(*)
FROM [user] u
WHERE first_name = 'James'
AND u.parent_company_id = company_id)
AS james_count
FROM company c
WHERE james_count > 0;
這不會編譯,因爲外部查詢不知道james_count
列別名。爲什麼不?
這有效,但不會因爲它會運行兩個子查詢而變慢?
SELECT
c.name,
(SELECT
COUNT(*)
FROM [user] u
WHERE first_name = 'James'
AND u.parent_company_id = company_id)
AS james_count
FROM company c
WHERE (SELECT
COUNT(*)
FROM [user] u
WHERE first_name = 'James'
AND u.parent_company_id = company_id)
> 0;
'選擇(查詢)一個地方james_count> 0' –