我需要在此查询中获取结果。
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”。我希望我能解释一下。我怎样才能做到这一点?感谢
答案 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