如何在mysql中多次计算数据?

时间:2015-06-17 12:13:58

标签: mysql

我需要在此查询中获取结果。

Select count(*) from users where cardnumber IN (1,2,3,1,2);

表用户;

 Username    cardnumber   
          A          1  
          B          2  
          C          3

我需要将结果设为“5”,因为我希望查询次数为“1”。原因; IN里面有两个“1”...但是我得到的结果只有“3”,因为在“1,2,3”之后它不再计算“1,2”。我希望我能解释一下。我怎样才能做到这一点?感谢

2 个答案:

答案 0 :(得分:0)

我认为这些sql对你有用。请检查一下。

SELECT COUNT(*) FROM users a RIGHT JOIN
(SELECT '1' AS  cardnumber
UNION ALL
SELECT '2'
UNION ALL
SELECT '3'
UNION ALL
SELECT '1'
UNION ALL
SELECT '2') b ON a.cardnumber = b.cardnumber

谢谢。

答案 1 :(得分:0)

由于您希望将两个值计算两次,因此可以在

时使用大小写
select sum(
case when cardnumber = 1 then 2 
when cardnumber = 2 then 1 
when cardnumber = 3 then 2 END
) from users

那怎么样?她只需更改IN列表并添加4

SELECT SUM(c1.cnt + c2.cnt)
FROM (SELECT count(*) AS cnt from users) c1
INNER JOIN 
(SELECT count(*) AS cnt 
    from users WHERE cardnumber 
    in (1, 3)) 
c2 ON 1 = 1