gpt4 book ai didi

mysql - SQLite 选择所有记录并计数

转载 作者:行者123 更新时间:2023-11-29 13:14:07 26 4
gpt4 key购买 nike

我有下表:

CREATE TABLE sometable (my_id INTEGER PRIMARY KEY AUTOINCREMENT, name STRING, number STRING);

运行此查询:

SELECT * FROM sometable;

产生以下输出:

1|someone|111
2|someone|222
3|monster|333

除了这三个字段之外,我还想包含一个表示表中存在相同名称的次数的计数。

我显然已经尝试过:

SELECT my_id, name, count(name) FROM sometable GROUP BY name;

尽管这不会为我提供每条记录的单独结果行。

理想情况下我会得到以下输出:

1|someone|111|2
2|someone|222|2
3|monster|333|1

其中第四列表示该数字存在的时间。

感谢您的帮助。

最佳答案

您可以使用 select 子句中的相关子查询来完成此操作:

Select st.*,
(SELECT count(*) from sometable st2 where st.name = st2.name) as NameCount
from sometable st;

您还可以将其编写为聚合子查询的连接:

select st.*, stn.NameCount
from sometable st join
(select name, count(*) as NameCount
from sometable
group by name
) stn
on st.name = stn.name;

编辑:

至于性能,找出答案的最佳方法是同时尝试并计时。当 sometable(name) 上有索引时,相关子查询效果最佳。尽管 MySQL 中的聚合被认为速度很慢,但有时这种类型的查询会获得令人惊讶的良好结果。最好的答案是测试。

关于mysql - SQLite 选择所有记录并计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21709213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com