Nasıl geri dönmek için MySQL SUM fonksiyonu eğer değer bulunursa '0' mıyım? | Netgez.com
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

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • Jason Parker

    Jason Parker

    14 Aralık 2009
  • The Slow Mo Guys

    The Slow Mo

    15 AÄžUSTOS 2010