2016-04-13 24 views
1

Buna benzer basit bir tablom var. Farklı otomobil türlerini üreten imalatlar var; ve her araba bir model numarası (benzersiz anahtarı) sahiptirMySQL - Metin içeriği ile nasıl gruplanır?

maker type model 
A  VAN  111 
A  VAN  112 
A  SEDAN 113 
A  SUV  114 
A  SUV  115 
B  VAN  116 
B  SUV  117 
C  SEDAN 118 
C  SEDAN 119 
C  SEDAN 120 
D  VAN  121 
E  VAN  122 
E  VAN  123 
E  SEDAN 124 
E  SUV  125 
Ben sadece arabanın bir tür ve birden fazla model üretmek üreticileri SEÇ nasıl

? Beynimi, bunu yapmanın bir yolunu pişirmeye çalıştım. (Bunlar sadece bir modeli var çünkü)

SELECT maker, type 
FROM table 
GROUP BY maker, type 
HAVING COUNT(type) = 1 

o A-SEDAN ve B-VAN gibi şeyler verir ihtiyacım olmayan budur: çalışırsanız ben GROUP BY düşünmek ve COUNT() fonksiyonu olarak HAVING hükümler alakalı ama. Birkaç modele sahipken 'type' sütununda aynı değere sahip bir satır almam gerekiyor.

cevap

1

Yalnızca tek bir araba türü ve birden fazla model üreten üreticileri nasıl seçebilirim?

Sen kullanabilirsiniz:

SELECT maker, MAX(type) AS type 
FROM tab 
GROUP BY maker 
HAVING COUNT(DISTINCT TYPE) = 1 
    AND COUNT(DISTINCT MODEL) > 1; 

LiveDemo

Çıktı:

╔═══════╦═══════╗ 
║ maker ║ type ║ 
╠═══════╬═══════╣ 
║ C  ║ SEDAN ║ 
╚═══════╩═══════╝ 
+1

Allah şaşırtıcı. Çok teşekkürler! Henüz gitmem gereken çok yol var. –

+0

@ViktorPoliakov Sorunuz çözüldüyse [cevapımı kabul et] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235) :) – lad2025

+1

Az önce yaptım. Duygularla çok boğulmuştum. Teşekkürler:) –

İlgili konular