SORU
29 EYLÜL 2011, PERŞEMBE


Nasıl geri dönmek için MySQL SUM fonksiyonu eğer değer bulunursa '0' mıyım?

MySQL: basit bir işlevi var

$query="SELECT SUM(Column 1) from Table WHERE Column 2='Test'";

Eğer 2 Sütununda herhangi bir giriş metni 'Test' sonra, bu fonksiyon 0 iade etmek istiyorum ne zaman BOŞ verir. içeriyorsa Bildiğim kadarıyla buna benzer bir soru soruldu bir kaç kez burada, ama fırsatım olmadı uyum cevaplar için benim amacım, çok isterdim buna şükret biraz yardım etsin bu işi.

Teşekkürler

Nick

CEVAP
29 EYLÜL 2011, PERŞEMBE


COALESCE bu sonucu önlemek için kullanın.

SELECT COALESCE(SUM(column),0)
FROM   table
WHERE  ...

Eylem olarak görmek için, lütfen bu sql keman görmek: http://www.sqlfiddle.com/#!2/d1542/3/0


Daha Fazla Bilgi İçin:

Üç tabloları (tüm numaraları ile bir boşluk ile bir, ve bir karışım ile bir) verilir

SQL Fiddle

MySQL 5.5.32 Kurulum Şeması:

CREATE TABLE foo
(
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO foo (val) VALUES
(null),(1),(null),(2),(null),(3),(null),(4),(null),(5),(null),(6),(null);

CREATE TABLE bar
(
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO bar (val) VALUES
(1),(2),(3),(4),(5),(6);

CREATE TABLE baz
(
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO baz (val) VALUES
(null),(null),(null),(null),(null),(null);

Sorgu 1:

SELECT  'foo'                   as table_name,
        'mixed null/non-null'   as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    foo
UNION ALL

SELECT  'bar'                   as table_name,
        'all non-null'          as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    bar
UNION ALL

SELECT  'baz'                   as table_name,
        'all null'              as description,
        0                       as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    baz

Results:

| TABLE_NAME |         DESCRIPTION | EXPECTED_SUM | ACTUAL_SUM |
|------------|---------------------|--------------|------------|
|        foo | mixed null/non-null |           21 |         21 |
|        bar |        all non-null |           21 |         21 |
|        baz |            all null |            0 |          0 |

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Cartoonium

    Cartoonium

    11 NİSAN 2011
  • Jeremy Stark

    Jeremy Stark

    23 Mayıs 2010
  • ParryGripp

    ParryGripp

    12 AĞUSTOS 2006