Mysql 使用DISTINCT筛选重复项?

Mysql 使用DISTINCT筛选重复项?,mysql,distinct,Mysql,Distinct,我有以下查询,只想列出第一个匹配项 $first = $_GET['category']; $first = $first[0] . "%"; $query = mysql_query("SELECT * FROM lyrics WHERE authorclean LIKE '".$first."'") or die(mysql_error()); ?类别=b 那么你能做到这一点吗?这是我尝试过的,但没有成功: $query = mysql_query("SELECT DISTINCT au

我有以下查询,只想列出第一个匹配项

$first = $_GET['category'];
$first = $first[0] . "%";

$query = mysql_query("SELECT * FROM lyrics WHERE authorclean LIKE '".$first."'") or die(mysql_error());
?类别=b

那么你能做到这一点吗?这是我尝试过的,但没有成功:

$query = mysql_query("SELECT DISTINCT authorclean FROM lyrics WHERE authorclean LIKE '".$first."'") or die(mysql_error());
编辑:以下是完整代码:


您应该使用限制1仅列出第一个匹配项。

如果您有一个带有字段的a表格tbl_歌词:作者歌词年份,并填写如下:

$first = $_GET['category'];
$first = $first[0] . "%";

$query = mysql_query("SELECT * FROM lyrics WHERE authorclean LIKE '".$first."'") or die(mysql_error());
author_A       lyrics_A        year_A
author_A       lyrics_A1       year_A1
author_A1       lyrics_A2       year_A
author_B        lyrics_B1       year_B1
如果你这样做

select distinct(author) from tbl_lyrics where author like '%author_A%'
您将获得:author_A和author_A1。不是第一个匹配的

如果您想要第一个匹配的,可以执行以下操作:

select author from (select distinct(author) as author from tbl_lyrics where author like '%author_A%') where rownum <2;
这将仅返回author_A


Limit用于MySql,但不适用于oracle数据库

不起作用意味着什么?你有错误吗?你得到了错误的结果吗?另外,请阅读SQL注入。不要在SQL查询中直接使用任何外部输入而不转义它们。它不会返回任何结果,只有一个空页面。没有错误消息。您是否转储了实际查询并直接对数据库运行该查询以查看它是否返回任何结果?以这种方式使用limit时,您还应该有一个ORDER BY子句。@nnichols这取决于op想要的顺序。同意。我只是想知道应该有一个ORDERBY子句,否则查询是不确定的。我想列出每一个以字母B开头的艺术家。所以披头士、Blink 182、Breaking Benjamin等。目前我输出披头士4次,因为我的DB中有4次匹配。我只想让它显示一次。正如利科维卡所问的,你说的“不工作”是什么意思?您的独特查询在我看来很好,尽管不需要跳入或跳出双引号。Just do-authorclean喜欢“$first”
select author from (select distinct(author) as author from tbl_lyrics where author like '%author_A%') where rownum <2;