Php 无法将LIKE与GROUP BY一起使用
我想从数据库中删除重复的条目,所以我考虑过使用GROUPBY,但它似乎不适用于LIKE。下面是我的问题Php 无法将LIKE与GROUP BY一起使用,php,mysql,Php,Mysql,我想从数据库中删除重复的条目,所以我考虑过使用GROUPBY,但它似乎不适用于LIKE。下面是我的问题 $query = array(); $query[] = "SELECT * FROM `table_name` WHERE `id` LIKE :id GROUP BY id"; $query = implode(' ', $query); $statement = self::$connection->prepare($query); $statement->execute
$query = array();
$query[] = "SELECT * FROM `table_name` WHERE `id` LIKE :id GROUP BY id";
$query = implode(' ', $query);
$statement = self::$connection->prepare($query);
$statement->execute(
array(
':id' => '%'.$id.'%'
));
$data = $statement->fetchAll(PDO::FETCH_ASSOC);
return $data;
好的,表的值结构如下:
id: location:
001 testA
002 testA
003 testB
004 testC
005 testB
SELECT DISTINCT location, id FROM `table_name` WHERE `id` LIKE :id
如何从具有上述值的表中获取唯一位置
我试着这样做:
id: location:
001 testA
002 testA
003 testB
004 testC
005 testB
SELECT DISTINCT location, id FROM `table_name` WHERE `id` LIKE :id
它似乎返回唯一的ID,但我想得到唯一的位置。我确实尝试了distinct(location),但结果与unique id完全相同。尝试以下方法:
select a.trialno, a.location from table_name a join table_name b on(b.trialno>a.trialno and a.location=b.location) group by a.trialno
如果位置不唯一,您将获得所有旧条目。如果trialno是Int,它就工作了
致意
托马斯试试这个
SELECT DISTINCT location, id FROM `table_name` WHERE `id` LIKE '%'.$id.'%'
而不是
SELECT DISTINCT location, id FROM `table_name` WHERE `id` LIKE :id
如果您只需要唯一的条目,
DISTINCT
可能是您要查找的,而不是groupby
我尝试了DISTINCT-after-where子句,不起作用它被用作从表中选择DISTINCT-column1…
,而不是在where
子句之后。它似乎不起作用
-您能澄清一下吗?因为它应该有效。为什么where子句中有'id',而group子句中只有id而没有'?