繁体   English   中英

如何根据表格中出现的次数选择行?

[英]How do I select row based on the number of times it appears in the table?

我有我的表:称之为tblA表有三行, idsub-idvisibility

sub-id是主键(它为id定义分类法)。 我正在尝试建立一个查询,该查询选择出现少于三遍的每个id

这是查询/结果示例

select * from tbla where id = 188002;

+--------+--------+-------------+
| sub-id |  id    | visibility  |
+--------+--------+-------------+
| 284922 | 188002 |      2      |
| 284923 | 188002 |      2      |
| 284924 | 188002 |      0      |
+--------+--------+-------------+

从我在这里这里所看到的看来,我需要在...本身上加入表格。 我真的不明白会取得什么成就。

如果有人对此有所了解,我们将不胜感激。 我将继续对其进行研究,并使用我遇到的任何其他信息来更新此主题。

谢谢

SELECT id
    FROM tbla
    GROUP BY id
    HAVING COUNT(*) < 3

如果要从表中选择所有列,则必须在子选择中使用@Joe的查询:

SELECT * FROM tbla a
WHERE a.id IN (SELECT DISTINCT b.id 
               FROM tbla b 
               GROUP BY b.id 
               HAVING COUNT(*) < 3)

此查询首先选择重复项少于3个的所有ID。
不重复项消除重复项,查询的工作原理相同,但略慢一些。

接下来,它选择ID满足子选择中条件(即重复ID少于3个)的所有行。

不能一次性执行此操作的原因是, group by将具有相同id的所有行一起堆放在一个super-row (因为缺少更好的metafor)
您不能将不在group by子句中的列分开。

外部选择解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM