Rumah > Soal Jawab > teks badan
Terima kasih kerana membantu saya, saya masih belajar SQL. Saya mempunyai jadual utama yang dipanggil JEDI dan saya cuba mendapatkan maklumat khusus tentang menggunakan syarat Inner JOIN dan Where. Secara khusus, saya ingin mendapatkan bilangan JEDI yang melawat planet tertentu antara tarikh tertentu dan tahap mereka.
Saya kemudiannya ingin menapis menggunakan Inner JOIN pada jadual yang sama dan hanya menunjukkan kepada saya keputusan untuk JEDI yang mempunyai lebih daripada 1 padawan di planet tersebut. Saya rasa syarat kedua membuat saya pergi. Saya telah menampal kod yang saya gunakan dan jadual data sampel
Hasil saya sepatutnya hanya 2, Master Obi-Wan adalah satu-satunya yang memenuhi kriteria
SELECT COUNT(jedi.jedi_id),jedi.rank_id FROM jedi WHERE jedi.date >='2022-01-01' AND jedi.date <='2022-06-31' AND jedi.planet='Tatoine' INNER JOIN jedi ON jedi.jedi_id WHERE COUNT(jedi.padawan)>=2 GROUP BY jedi.rank_id
P粉8785105512024-02-04 16:59:14
Mula-mula, anda perlu mengumpulkan lajur dan menggunakan HAVING COUNT
untuk mengira nilai pendua.
SELECT COUNT(jedi.jedi_id),jedi.rank_id FROM jedi WHERE jedi.date BETWEEN '2022-01-01' AND '2022-06-31' AND jedi.planet='Tatoine' GROUP BY jedi.jedi_id, jedi.rank_id HAVING COUNT(jedi.jedi_id) > 1
Nota: Ciri ini hanya berfungsi untuk setiap jedi_id
具有唯一值 jedi.padawan
. Pertanyaan ini sesuai untuk senario ini.
Walau bagaimanapun, anda boleh mengira jedi.padawan
的条件来改进查询,以便每个 jedi.jedi_id< 上重复出现
jedi.padawan
nilai/kod> unik dengan menambah satu lagi yang tidak akan disertakan
SELECT COUNT(jedi.jedi_id),jedi.rank_id FROM jedi WHERE jedi.date BETWEEN '2022-01-01' AND '2022-06-31' AND jedi.planet='Tatoine' GROUP BY jedi.jedi_id, jedi.rank_id HAVING COUNT(jedi.jedi_id) > 1 AND COUNT (DISTINCT jedi.padawan) > 1
P粉2486022982024-02-04 14:18:54
Anda boleh menggantikan ini dengan mesti DALAM JOIN jedi DI jedi.jedi_id WHERE COUNT(jedi.padawan)>=2