我有兩個關係表,person和event_registration,並且我想選擇所有已註冊10個或更少事件的人。我發現了一個似乎是正確的查詢。它可以找到這些人用下面的查詢:mysql:選擇具有一定數量的關係行的人
SELECT person_id
FROM event_registration
GROUP BY person_id
HAVING COUNT(*) <= 10
注意,event_registration.person_id涉及匹配person.id錶行。現在我想使用這個查詢搜索人表,但我的查詢似乎崩潰了MySQL。爲什麼?
SELECT id
FROM person
WHERE id IN (
SELECT person_id
FROM event_registration
GROUP BY person_id
HAVING COUNT(*) <= 10
)
我之所以想改變查詢是因爲我也找其他的屬性,所以(更接近),最終的查詢看起來像:
SELECT *
FROM person
WHERE name LIKE '%something%'
AND AGE > 20
AND id IN (
SELECT person_id
FROM event_registration
GROUP BY person_id
HAVING COUNT(*) <= 10
)
當然這並未中不工作,因爲mysql似乎崩潰了。我究竟做錯了什麼?
你是什麼意思,它'崩潰mysql'?查詢是否超時? –
是的,查詢超時使Web服務器(IIS 7)不再響應,直到我重新啓動它。 –