使用 sql 命令只返回表中奇数的记录

Posted

技术标签:

【中文标题】使用 sql 命令只返回表中奇数的记录【英文标题】:only return records with odd count in a table with sql command 【发布时间】:2015-02-08 19:06:46 【问题描述】:

我的 Access 数据库中有一个仓库表,如下所示:

   product_id
       10
       20
       20
       30
       30
       30
       40
       40
       40
       40

现在我需要一个 SQL 查询来返回 10, 30 product_ids 在表中有奇数。

SELECT product_id, Count(product_id) AS cnt
FROM warehouse
GROUP BY product_id;

此查询返回每个值的计数,但我如何编辑它以仅返回奇数 cnt 的行?

【问题讨论】:

【参考方案1】:

您可以将having 子句与mod 运算符一起使用:

SELECT   product_id, COUNT(product_id) AS cnt
FROM     warehouse
GROUP BY product_id
HAVING   COUNT(product_id) MOD 2 = 1;

【讨论】:

【参考方案2】:
SELECT *
FROM (SELECT product.id, count(product.id) AS cnt FROM  warehouse GROUP BY product.id) 
WHERE (cnt - (Round(cnt/2.0))*2) <> 0;

这是我的解决方案,有没有更好的方法?

【讨论】:

以上是关于使用 sql 命令只返回表中奇数的记录的主要内容,如果未能解决你的问题,请参考以下文章

sql中的join使用

DB2 和 SQL-如何在特定字段中返回最大值,以便每行只显示一条记录;从多个表中提取数据

sql连接查询

Laravel ::all() 命令只返回 1 条记录

sql删除重复记录

Access SQL 中的联接语句