我使用查询重复值的查询,但现在我希望它与此查询相反:
SELECT * FROM orders WHERE buy_date (SELECT buy_date FROM orders GROUP BY buy_date HAVING count(*)>1)
我尝试更改HAVING count(*)=0 / HAVING count(*)<1
把它返回任何内容
答案 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