我有一张桌子,看起来像:

ID     Name    Location
1      peter   New York
2      john    New York
3      jack    New York
4      shaun   London


如您所见,许多用户的“位置列”值可能相同,例如,如何在搜索“纽约”时从每个“位置”中仅获得一个结果?

我正在使用以下SQL查询:

$stmt = $pdo->prepare('SELECT * from users WHERE location SOUNDS LIKE  :s');
$stmt->bindValue(':s', '%' . $query . '%' , PDO::PARAM_INT);
$stmt->execute();
$values = $stmt->fetchAll();

$count = $stmt->rowCount();
if($count > 0){
    foreach($values as $val){
        echo $val['location'];
    }
}


请注意 :
我不想使用LIMIT 1,因为它用于搜索表单,并且在输入新内容时,用户可能想要查看其他位置,例如纽卡斯尔。

有可能这样吗,或者我需要创建另一个与用户表具有一对多关系的表?

最佳答案

您可以执行以下操作:

SELECT *
FROM users
WHERE ID IN (SELECT MIN(id)
             FROM users
             WHERE location SOUNDS LIKE  :s
             GROUP BY location
            );

关于php - 如何从一个包含多个此值的表中仅获得1个结果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48975668/

10-13 08:53