Php 无法将LIKE与GROUP BY一起使用

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

我想从数据库中删除重复的条目,所以我考虑过使用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(
    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而没有'?