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

  • CommonArtisan

    CommonArtisa

    7 Temmuz 2012
  • El SalvaLobo

    El SalvaLobo

    10 Temmuz 2006
  • NYLON Video

    NYLON Video

    11 Aralık 2006