SQL显示重复条目

问题描述 投票:1回答:3

我有一个从数据库中提取信息的SQL代码。这是代码:

$info = "SELECT field_5, record_meta_keywords
FROM cms_custom_database_1
WHERE field_5 > ''
GROUP BY field_5
ORDER BY field_5
DESC LIMIT 10";

问题是field_5有重复的条目。例如,该字段中有两个868,但输出仅显示一个而不显示另一个。如何更改此选项以显示所有条目,而不仅仅是每个数字中的一个?

php mysql sql
3个回答
2
投票

如果没有聚合功能,则不应使用group by

SELECT field_5, record_meta_keywords
FROM cms_custom_database_1
WHERE field_5 > ''
ORDER BY field_5
DESC LIMIT 10

如果你想要不同的价值,那么使用distinct

在SQL中不推荐使用没有聚合函数的group by,在最新版本的mysql中不允许(默认情况下),并且与其他版本(<5.7)产生不可预测的结果

在您的情况下,如果您想查看所有结果,那么只需删除order by


2
投票

您明确指出 - 通过group by - 您希望结果集中只有一行用于field_5的每个值。

这给你留下了两个选择。一个是删除GROUP BY

SELECT field_5, record_meta_keywords
FROM cms_custom_database_1
WHERE field_5 > ''
ORDER BY field_5 DESC
LIMIT 10

另一种是将其他数据合并为一列:

SELECT field_5, GROUP_CONCAT(record_meta_keywords) as record_meta_keywords
FROM cms_custom_database_1
WHERE field_5 > ''
GROUP BY field_5
ORDER BY field_5 DESC
LIMIT 10

0
投票

GROUP BY返回唯一(即不同)的事件。从查询语句中取出它。