我有一张桌子,看起来像:
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/