Table kal
id integer primary key
init char 4 indexed
job char4
id init job
--+----+------
1 | aa | job1
2 | aa | job2
3 | bb | job1
4 | cc | job3
5 | cc | job5
我想告訴這裏的init有超過一排的所有行:顯示了鍵的行與多個行
id init job
--+----+------
1 | aa | job1
2 | aa | job2
4 | cc | job3
5 | cc | job5
我想:
select * from kal where init in (select init from kal group by init having
count(init)>2);
實際上,表有60000行,查詢是
count(init)<40,
但它需要大量的時間,phpmyadmin和我的耐心耗盡。
兩個
select init from kal group by init having count(init)>2)
和
select * from kal where init in ('aa','bb','cc')
運行在 「沒有時間」,小於0.02秒。
我已經嘗試了不同的子查詢,但都需要「無限」的時間,超過幾分鐘;我其實從來沒有讓他們完成。
太好了!我的查詢在50.000條記錄上從「無限」時間變爲0.0982秒。如果可以的話,我會投票。 :-)順便說一下,內部的SELECT可以只是SELECT init FROM kal。這裏重要的是,子選擇符在「)」之後有其自己的別名「b」,而不是在裏面。我希望我可以格式化... –
@LeifNeland您可以修改小提琴,我可以更新代碼以反映更準確的答案。 – Kermit