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)

那么 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%'

最佳答案

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

关于mysql - 使用 DISTINCT 过滤重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10161892/

相关文章:

mysql - 改变数据库引擎

sql - 检查 PostgreSQL 中组查询中的单个行

postgresql如何分组然后得到first_time和last_time,

sql - 如何在一个 MS SQL 查询中获得不同的平均值和总和值?

sql - 为什么 hibernate hql distinct 会导致 sql 在左连接中不同?

php - 带有单选按钮的表单提交到 mysql

php - 使用 PHP 更新 MySQL 数据库

php - 当在应用程序中删除所有输入值时,如何设置自动增量以在 mysql 上重置

php - 如何在 MySQL 中选择这个连接列表

mysql - 编写sql查询来获取搜索结果