sql SELECT查询没有做相反的事情

时间:2016-06-29 12:47:57

标签: mysql sql

我使用查询重复值的查询,但现在我希望它与此查询相反:

SELECT * FROM orders WHERE buy_date (SELECT buy_date FROM orders GROUP BY buy_date HAVING count(*)>1)

结果:result

我尝试更改HAVING count(*)=0 / HAVING count(*)<1把它返回任何内容

4 个答案:

答案 0 :(得分:2)

限制条款having count(*) < 1不会返回值。您不能返回半个记录集!试试HAVING count(*) < 2将返回计数为1的行。

您可能还想查看返回不同值的DISTINCT function

答案 1 :(得分:2)

我想你考虑使用相同的buy_date和不同的id重复两个订单(我想id是PK字段的名称)

重复 - 试试这个:

SELECT o1.*
FROM orders o1
WHERE EXISTS(
    SELECT 'duplicate'
    FROM orders o2
    WHERE o1.id <> o2.id
   AND o1.buy_date = o2.buy_date
)

单身 - 试试这个:

SELECT o1.*
FROM orders o1
WHERE NOT EXISTS(
    SELECT 'duplicate'
    FROM orders o2
    WHERE o1.id <> o2.id
   AND o1.buy_date = o2.buy_date
)

答案 2 :(得分:2)

有计数&gt; 1如你所说,返回重复。 Count = 1将返回非重复项。

答案 3 :(得分:1)

不应该是count(*)= 1?

如果你有count(*)= 0,这意味着你只选择那些不存在的记录......所以它没有正确地返回任何内容。

或者,如果您想在数学上正确,则sth>1的否定为sth<=1