mysql中的count查询是不是给出了结果?

时间:2014-10-06 06:42:53

标签: mysql sql

我想在mysql中询问一个查询,我有一个看起来像这样的表:

表XYZ

sender                      reciever

  1                            2
  1                            3
  2                            2
  4                            1
  5                            0
  7                            5
  8                            5

要求是:

在收件人中找到那些收件人的频率大于发件人列中的频率的条目。

这意味着输出应为

reciever

2
3
0
5

我试过它:

SELECT reciever 
FROM XYZ
WHERE count(reciever)>count(sender)

3 个答案:

答案 0 :(得分:2)

我认为你的意思是:

SELECT reciever 
  FROM XYZ
 WHERE reciever > sender

答案 1 :(得分:1)

看起来你想简单地比较频率。为此,您可以在两个单独的子查询中计算两列的频率,然后将它们连接起来进行比较。 LEFT JOIN不会消除SENDER;

中不存在的匹配
SELECT a.reciever
FROM (SELECT reciever, COUNT(*) c FROM mytable GROUP BY reciever) a 
LEFT JOIN (SELECT sender, COUNT(*) c2  FROM mytable GROUP BY sender) b
  ON a.reciever = b.sender AND c<=c2
WHERE sender IS NULL

An SQLfiddle to test with

答案 2 :(得分:1)

在reciver中找到有计数的数字&gt;计入发件人。因此,请计算reciversender中的每个数字重复次数,然后比较计数。我使用LEFT JOIN可以使用reciever中的数字,而不是sender中的数字:

SELECT r.reciever
FROM (
  SELECT reciever, COUNT(*) cnt
   FROM XYZ
   GROUP BY reciever
) r
LEFT JOIN (
  SELECT sender, COUNT(*) cnt
   FROM XYZ
   GROUP BY sender
) s ON s.sender = r.reciever AND s.cnt < r.cnt