2011-01-09 104 views
0

我有兩個MySQL查詢這是非常相似但它們歸到一個特定的WHERE條款(type)一COUNT(),所以我想知道他們是否可以合併成1個查詢看到,因爲只有WHERE條款(type)differenciates兩個?通過將兩個MySQL查詢合併爲1來簡化兩個MySQL查詢?

查詢1:

SELECT COUNT(referral_id) AS in_count 
FROM referrals 
WHERE author = '{$author}' 
     AND type = 'in' 
     AND ip_address = '{$ip_address}' 
LIMIT 1 

查詢2:

SELECT COUNT(referral_id) AS out_count 
FROM referrals 
WHERE author = '{$author}' 
     AND type = 'out' 
     AND ip_address = '{$ip_address}' 
LIMIT 1 

所有幫助是極大的讚賞:乙

回答

1
SELECT SUM(IF(type='in',1,0)) as in_count, 
     SUM(IF(type='out',1,0)) as out_count 
FROM referrals 
WHERE author = '{$author}' AND 
     ip_address = '{$ip_address}' 
LIMIT 1 
+0

+1,只是打字,但打我。對於OP來說,[this MySQL tidbit](http://dev.mysql.com/tech-resources/articles/wizard/page3.html)可能對這類事情有一些幫助。 – 2011-01-09 05:09:42

0

你只需要一個GROUP BY條款。

SELECT COUNT(referral_id) AS count, type 
FROM referrals 
WHERE author = '{$author}' 
    AND ip_address = '{$ip_address}' 
GROUP BY type 
LIMIT 1