2015-09-25 27 views
1

任何人可以幫助我得到的結果形式多個SQL請求:綁定多個查詢到一個結果

SELECT * 
(COUNT(*) AS Records FROM wp_posts WHERE post_type='news' AND post_status='publish') as News, 
(COUNT(*) AS Records FROM wp_posts WHERE post_type='promotion' AND post_status='publish') as Promos, 
(COUNT(*) AS Records FROM wp_posts WHERE post_type='contact' AND post_status='publish') as Contacts 
FROM wp_posts 

我只是想通過發送一個SQL請求,找出定製我的WP MySQL的多少職位。

回答

4

沒有必要在子查詢所有:

SELECT 
    SUM(CASE WHEN post_type='news' THEN 1 ELSE 0 END) AS News, 
    SUM(CASE WHEN post_type='promotion' THEN 1 ELSE 0 END) AS Promos, 
    SUM(CASE WHEN post_type='contact' THEN 1 ELSE 0 END) AS Contacts 
FROM wp_posts 
WHERE post_status='publish'; 

甚至更​​短:

SELECT 
    SUM(IF(post_type='news', 1, 0)) AS News, 
    SUM(IF(post_type='promotion', 1, 0)) AS Promos, 
    SUM(IF(post_type='contact', 1, 0)) AS Contacts 
FROM wp_posts 
WHERE post_status='publish'; 
+0

這個人是一個好方法! +1 –

+0

也許計數(CASE WHEN post_type ='news'THEN 1 END)稍快些? – jarlh

+1

@jarlh好吧,我不喜歡隱式的NULL,我會說這是味道的問題 – lad2025

1

使用UNION ALL到查詢組合(他們需要有相同的列數)

SELECT * FROM (
SELECT 1 
UNION ALL 
SELECT 2 
) 
1

可以發出一個與三個嵌套SELECT查詢選擇和得到的結果爲列:

SELECT 
(SELECT COUNT(*) FROM wp_posts WHERE post_type='news' AND post_status='publish') as News, 
(SELECT COUNT(*) FROM wp_posts WHERE post_type='promotion' AND post_status='publish') as Promos, 
(SELECT COUNT(*) FROM wp_posts WHERE post_type='contact' AND post_status='publish') as Contacts 
+0

非常感謝@MrTux – qqruza

+0

@qqruza更新,有一個C&P錯誤 – MrTux

相關問題