2010-04-02 14 views
6

Ben iki sütun içeren bir tablo var:Bir MySQL sorguda bunu yapabilir mi?

:

column A column B 
    1    2 
    1    2 
    2    1 

Ben en iyi ben elde edebilirsiniz olanların toplam = ikişerli = 3

3 toplam dönmek istiyorum şöyle iki sorgular olduğunu

SELECT sum(CASE WHEN columnA =1 THEN 1 ELSE 0 END) 
    + sum(CASE WHEN columnB =1 THEN 1 ELSE 0 END) 

SELECT sum(CASE WHEN columnA =2 THEN 1 ELSE 0 END) 
    + sum(CASE WHEN columnB =2 THEN 1 ELSE 0 END) 

Bu, bir sorguda yapılabilir mi? Teşekkür

Genelde

cevap

1
SELECT SUM(IF(columnA=1, 1, 0) + IF(columnB=1, 1, 0)) as ones, 
    SUM(IF(columnA=2, 1, 0) + IF(columnB=2, 1, 0)) as twos 
FROM myTable; 

C.

+0

Teşekkür çalıştı çözümü şu ben understnding yeteneğine hakkında sadece değilim – bsandrabr

-1

, bunu gibi şeyler saymak olacaktır:

SELECT columnA, COUNT(*) FROM myTable 
GROUP BY columnA 

kolumna tüm farklı değerlerin sayısını alır.

+0

1 I 'NEREDE kolumna IN eklersiniz (1,2) – soulmerge

0

Tek bir sorguda her şeyi almak için böyle bir şey deneyebilirim.

SELECT Result.Val, COUNT(Result.Val) AS Count 
FROM (
    SELECT ColumnA AS Val 
    FROM TableName 

    UNION 

    SELECT ColumnB AS Val 
    FROM TableName 
) AS Result 
GROUP BY Result.Val 
+0

Bu konuda sözdizimi hatası alıyorum. Doğru anladıysam bilmiyorum. Sonuç ve val asis kullanılır? – bsandrabr

+0

Bir bakayım. SQL Server'da çalışıyorum, belki de bunun MySQL'e nasıl dönüşebileceğine biraz iyimserdim. – mcliedtk

+0

Bu MS SQL Server çalıştığını doğruladı, ancak bu MySQL sınamak kuramıyorum. Bu cevapla ilgilenen herkes, lütfen bu çözümün yalnızca SQL Server'da çalışabileceğini unutmayın. Birine yardımcı olabileceği için burada bırakacağım. – mcliedtk

2

Bunu bir satırda 2 satır veya 2 değer olarak yapmak isteyip istemediniz.

İki sıra (biraz ortada her sütunlarından bir araya Tüm değerlerin yalnızca birliği ve birlik sonucu karşı değerine göre (1) grubunu saymak;. O yüzden bir satır yapmak istiyorum varsayıyoruz

yalnızca 1'leri veya 2s varsa

, çok basit:

SELECT SUM(A+B-2) 'twos', SUM(4-A-B) 'ones' FROM myTable 
+0

Benim için bunu açıklayamam, 4 – bsandrabr

+0

A = B = 1 ise, o zaman ilk toplam 0 (bu nedenle ikiye doğru saymaz) ve ikinci toplam 2 içerir (böylece 2 olana kadar) – DVK

+0

Eğer A = B = 2 ise, o zaman ilk toplam 2 (bu nedenle 2 ikişer sayılır) ve ikinci toplam 0 (bu yüzden sıfır olanları) – DVK

-1
SELECT COUNT(*) FROM table WHERE columnA=1 or columnB=1 
+0

Teşekkürler, ama ikişer kaç? – bsandrabr

İlgili konular