Dar*_*ius 17 mysql sql select duplicates
在mysql表中info
我有:
ID,姓名,城市,日期,状态
我想从"info"中选择所有名称进行查询
$query = mysql_query("SELECT name FROM info WHERE status = 1 ORDER BY id")
or die(mysql_error());
while ($raw = mysql_fetch_array($query))
{
$name = $raw["name"];
echo ''.$name.'<br>';
}
Run Code Online (Sandbox Code Playgroud)
好吧,结果是它返回所有条目.我想回复所有条目没有重复.
说:在原始的"名称"下,我们插入了名字"约翰"10次.
我想只回应一次.这可能吗?
Boh*_*ian 40
这很简单:
SELECT DISTINCT name FROM info WHERE status = 1 ORDER BY id
Run Code Online (Sandbox Code Playgroud)
SQL关键字DISTINCT
可以解决这个问题.
Dal*_*len 14
尝试使用此作为您的查询:
SELECT DISTINCT name FROM info WHERE status = 1 ORDER BY id
Run Code Online (Sandbox Code Playgroud)
得到不同的名字
或作为其他建议用途 GROUP BY
SELECT name FROM info WHERE status = 1 GROUP BY name ORDER BY id
Run Code Online (Sandbox Code Playgroud)
我认为第一个更直观,两者之间没有很大的性能差异
编辑
因为OP也想要我们去的名字数量:
SELECT name,COUNT(id) AS n_names
FROM info WHERE status = 1
GROUP BY name
ORDER BY name
Run Code Online (Sandbox Code Playgroud)
你可以ORDER BY
name
或n_names
根据你的需要
更改
SELECT name FROM info WHERE status = 1 ORDER BY id
Run Code Online (Sandbox Code Playgroud)
至
SELECT name FROM info WHERE status = 1 GROUP BY name ORDER BY id
Run Code Online (Sandbox Code Playgroud)
观察GROUP BY
添加的内容.有关组的更多信息,请访问http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html
编辑:
对于名称与表面数量尝试
SELECT name, count(name) FROM info WHERE status = 1 GROUP BY name ORDER BY id
归档时间: |
|
查看次数: |
71280 次 |
最近记录: |