MySQL的选择名称和总名称列数
编辑了一个更好的例子:MySQL的选择名称和总名称列数
我试图让不同的名称的列表,以及这些不同名称的总列数,而不是每个名字计数,但列。像这样:
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
和limit 3:
MAG
PAUL
Peter
3
如果查询超过或总计数,如果查询不超过限制的总数将是上限。
SOLUTION 因为它似乎是难以实现在一个MySQL查询我选择以更简单,更快的解决方案,将ASLO砍掉MySQL查询时间预期的结果。
查询 SELECT DISTINCT名称FROM我的表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.
限制查询使用,因为它是每天一个巨大的数据库更新,可能限制将是1000和$ count_ip的将返回1000,但如果每天名称更新小于1000的查询返回一个较小的值比LIMIT和$ count_ips将返回正确的较小名称计数。 感谢
只要找到它更容易和mysql轻。
$count_names = 0;
foreach($name as $count){
$my code to manipulate names;
$count_names++;
}
echo $count_names; Gives me the total names.
提示您可能会遇到的未来问题:如果基于非SQL查询的答案可以被SQL查询问题接受,则应该在您的问题中明确声明。否则,如果你用你所问的边界之外的某个东西来回答自己的问题,那么你的问题就会被SO MOD所标记,而且没有人想要:D –
请检查这是你想要什么:
SELECT GROUP_CONCAT(DISTINCT name), COUNT(DISTINCT name) from table;
编号:草莓注释和笛
UPDATE
(SELECT DISTINCT(name) from table ORDER BY name LIMIT 3)
UNION
(SELECT IF(COUNT(DISTINCT(name)) > 3, 3, COUNT(DISTINCT(name))) FROM table)
嗨,谢谢...不,这是不给列的名称SELECT GROUP_CONCAT(DISTINCT(名称)),COUNT(DISTINCT名称)从表中给出的总数给我:Peter-> 1 Sue-> 1 Mag-> 1 Paul - > 1而不是Mag Peter Sue 4 – Box
根据您的要求,这是yielding,看到这里,http://sqlfiddle.com/#!9/eb004/3 – fortune
嗷终于....它确实给出了4名和总数。现在唯一的问题是它创建了2个数组(名称...昏迷分离)和Total。是否有可能将第一个数组分成4个数组,每个名称+总数组?另外如何按名称命名,按名称命名DESC并在将来限制为0,1000? – Box
在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,无论)来获得最后一行,这将是总数。
好的答案以及:) – fortune
SELECT GROUP_CONCAT(名称),COUNT(DISTINCT名)... – Strawberry
感谢草莓,它不给我正确的结果:Peter-> Sue-> MAG-> Paul-> 4 ...相反,它给了我:Peter-> 1Sue-> 1Mag-> 1Paul-> 1 – Box
RDBMS中的行表示无序集合。除ORDER BY表达式定义的顺序外,它们没有顺序。 – Strawberry