gpt4 book ai didi

mysql 选择名称和总名称列数

转载 作者:行者123 更新时间:2023-11-29 10:45:07 25 4
gpt4 key购买 nike

已编辑以获得更好的示例:

我正在尝试获取不同名称的列表以及这些不同名称的总列数,不是每个名称的计数而是列的计数。就像这样:

id  |  date        | name
----|--------------|--------
1 | 2017-06-23 | Peter
2 | 2017-06-23 | Sue
3 | 2017-06-23 | Mag
4 | 2017-06-23 | Sue
5 | 2017-06-23 | Paul
6 | 2017-06-23 | Paul
7 | 2017-06-23 | Sue

预期结果将在单独的数组中ORDER BY name DESC限制3:

MAG 
PAUL
Peter
3

如果查询超出限制,则总计数为限制;如果查询未超出限制,则为总计数。

解决方案由于在一个 mysql 查询中似乎很难达到预期的结果,我选择了一种更简单、更快的解决方案,这也将减少 mysql 查询时间。

查询 SELECT DISTINCT name FROM my table ORDER by name DESC LIMIT 3;

由于我要使用 php foreach 来操作结果,所以我只计算了 foreach 内的名称。

$count_names = 0;

foreach($name as $count ){

$my code to manipulate names;

$count_names++;
}
echo $count_names; Gives me the total names.

使用查询 LIMIT 是因为它是一个每天更新的巨大数据库,可能限制为 1000,$count_ip 将返回 1000。但是如果每日名称更新小于 1000,查询将返回比 LIMIT 更小的值,并且$count_ips 将返回正确的较小名称计数。谢谢

最佳答案

在 MySQL 中:

set @num = 0;
SELECT name FROM (
SELECT name, @num := @num + 1 AS num
FROM (
SELECT name
FROM mytable
GROUP BY name
ORDER BY name
LIMIT 3
) AS a
UNION
SELECT @num as name, @num AS num
) AS b

(这是使用 SQL fiddle from fortune's answer 变体的示例)

至于为什么你想这样做...耸耸肩:)

请注意,如果您在真正的 RDBMS 中执行此操作,并且您不喜欢变量、内部选择语句和联合的所有技巧,您可以只执行内部选择(有限制的选择)并返回那里的所有结果,但使用该语言的“结果集大小”功能(例如:rowCount()、num_results,等等)来获取最后一行,这将是总数。

关于mysql 选择名称和总名称列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44736931/

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