这个4的总和结果在一个中选择

时间:2015-04-05 15:29:28

标签: mysql select

如果可能的话,我想在一个中缩短这4个选项,或者只是将所有选择结果加起来

SELECT COUNT(igrac2) FROM tekma
WHERE igrac2 LIKE "Dony" AND golovi1<golovi2

SELECT COUNT(igrac2) FROM tekma
WHERE igrac2 LIKE "Dony" AND golovi1=golovi2 and penali=2


SELECT COUNT(igrac1) FROM tekma
WHERE igrac1 LIKE "Dony" AND golovi1>golovi2

SELECT COUNT(igrac1) FROM tekma
WHERE igrac1 LIKE "Dony" AND golovi1=golovi2 AND penali=1

3 个答案:

答案 0 :(得分:1)

你可以这样做:

SELECT
    SUM(IF(igrac2 LIKE "Dony" AND golovi1 < golovi2, 1, 0)) +
    SUM(IF(igrac2 LIKE "Dony" AND golovi1 = golovi2 and penali = 2, 1, 0)) +
    SUM(IF(igrac1 LIKE "Dony" AND golovi1 > golovi2, 1, 0)) +
    SUM(IF(igrac1 LIKE "Dony" AND golovi1 = golovi2 AND penali = 1, 1, 0))
FROM tekma
WHERE (igrac2 LIKE "Dony" AND golovi1 < golovi2)
  OR (igrac2 LIKE "Dony" AND golovi1 = golovi2 and penali = 2)
  OR (igrac1 LIKE "Dony" AND golovi1 > golovi2)
  OR (igrac1 LIKE "Dony" AND golovi1 = golovi2 AND penali = 1)

WHERE子句是可选的,只要在这种情况下获得有效的结果,但是如果你的表很大并且匹配结果的数量很小,那么留下它是有益的。

答案 1 :(得分:0)

您可以使用条件和作为

select
sum( case when igrac2 = 'Dony' and golovi1<golovi2 then 1 else 0 end) as sum1,
sum( case when igrac2 = 'Dony' and golovi1=golovi2 and penali=2 then 1 else 0 end) as sum2,
sum( case when igrac2 = 'Dony' and golovi1>golovi2 then 1 else 0 end) as sum3,
sum( case when igrac2 = 'Dony' and golovi1=golovi2 and penali=1 then 1 else 0 end) as sum4
from tekma

答案 2 :(得分:0)

你可以试试这个:

SELECT 
  SUM(IF(igrac2 LIKE "Dony" AND golovi1<golovi2, 1, 0)) AS count1,
  SUM(IF(igrac2 LIKE "Dony" AND golovi1=golovi2 and penali=2)) AS count2,
  SUM(IF(igrac1 LIKE "Dony" AND golovi1>golovi2, 1,0)) AS count3,
  SUM(IF(igrac1 LIKE "Dony" AND golovi1=golovi2 AND penali=1, 1,0)) AS count4
FROM tekma

获得总数:

SELECT 
  (SUM(IF(igrac2 LIKE "Dony" AND golovi1<golovi2, 1, 0)) +
  SUM(IF(igrac2 LIKE "Dony" AND golovi1=golovi2 and penali=2)) +
  SUM(IF(igrac1 LIKE "Dony" AND golovi1>golovi2, 1,0)) +
  SUM(IF(igrac1 LIKE "Dony" AND golovi1=golovi2 AND penali=1, 1,0))) AS totalCount
FROM tekma