我有以下查询,并且只想列出第一个匹配。
$first = $_GET['category'];
$first = $first[0] . "%";
$query = mysql_query("SELECT * FROM lyrics WHERE authorclean LIKE '".$first."'") or die(mysql_error());
(?类别= b)的
所以DISTINCT能做到这一点吗?这是我试过的,但没有用:
$query = mysql_query("SELECT DISTINCT authorclean FROM lyrics WHERE authorclean LIKE '".$first."'") or die(mysql_error());
编辑:以下是完整代码:
function getCategory() {
$first = $_GET['category'];
$first = $first[0] . "%";
$query = mysql_query("SELECT DISTINCT authorclean FROM lyrics WHERE authorclean LIKE 'B%'") or die(mysql_error());
//$query = mysql_query("SELECT * FROM lyrics WHERE authorclean LIKE '".$first."'") or die(mysql_error());
if(mysql_num_rows($query) == 0) {
echo "Geen resultaten gevonden.";
} else {
while ($row = mysql_fetch_assoc($query)) { ?>
<p><a href="/<?= $_GET['category']; ?>/<?= strtolower($row['authorclean']); ?>/"><?= $row['author']; ?></a></p>
<?php }
}
}
(B%仅用于测试)
如果我直接在数据库中运行以下查询,我会得到两个结果。如果我使用上面的代码运行,我只得到一个空页面(除了那里已有的html)。
SELECT DISTINCT authorclean FROM lyrics WHERE authorclean LIKE 'B%'
答案 0 :(得分:2)
您应该使用LIMIT 1
仅列出第一个匹配项。
答案 1 :(得分:0)
如果您有一个表“tbl_lyrics”,其中包含字段:作者歌词年份,并填写如下:
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。
限制与MySql一起使用,但不适用于oracle数据库