2017-03-07 4 views
0

Nach Schema der Tabelle aufgerufenen Seiten, die auf MySQL 5.6 Servergleich, ungleich Bedingungen auf demselben Feld in einzelnen SQL-Abfrage

+---------------+------------------+------+-----+---------+----------------+ 
| Field   | Type    | Null | Key | Default | Extra   | 
+---------------+------------------+------+-----+---------+----------------+ 
| id   | int(10) unsigned | NO | PRI | NULL | auto_increment | 
| city   | varchar(255)  | YES |  | NULL |    | 
| email   | varchar(255)  | YES |  | NULL |    | 
+---------------+------------------+------+-----+---------+----------------+ 

Ich mag kombinieren folgenden zwei SQL-Abfragen in einzelne SQL-Abfrage ausgeführt wird, ist das möglich ??. Ich habe versucht, mit verschachtelten Abfragen, aber nicht das gewünschte Ergebnis erhalten.

select count(*) from pages where email != ""; 
select count(*) from pages where email = ""; 

Dank

Antwort

2

In MySQL können Sie dieses sehr sauber schreiben:

select sum(email <> "") not_blank, sum(email = "") blank from pages; 

Es nutzt die Tatsache, dass um wahr zu 0 in MySQL zu 1 und falsch auswertet auswertet.

In anderen DBMSes wird äquivalente Abfrage sein:

select sum(case when email <> "" then 1 else 0 end) not_blank, 
    sum(case when email = "" then 1 else 0 end) blank 
from pages; 

Wenn Sie COUNT verwenden möchten:

select count(case when email <> "" then 1 end) not_blank, 
    count(case when email = "" then 1 end) blank 
from pages; 
0

Sie sogar einen CASE Ausdruck verwenden können.

Abfrage

select 
    sum(case when trim(`email`) = "" or `email` is null then 1 else 0 end) `is_null`, 
    sum(case when trim(`email`) <> "" or `email` is not null then 1 else 0 end) `is_not_null` 
from `pages`; 
0
SELECT SUM(NOT_BLANK) NOT_BLANK,SUM(BLANK) BLANK FROM 
(
select count(*) as NOT_BLANK,0 as BLANK from pages where email != ""; 
UNION ALL 
select 0 as NOT_BLANK,count(*) as BLANK from pages where email = ""; 
)ZZ 

Bitte versuchen Sie es über Code, hoffen, dass dies helfen wird.

Verwandte Themen