2017-04-19 145 views
0

我想摆脱数据库中的重复条目,所以我想使用GROUP BY,但它似乎不适用于LIKE。以下是我的查询。无法使用LIKE和GROUP BY

$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,但是,我想唯一的位置。我尝试了不同的(位置),但结果与唯一的ID相同。

+2

如果你只是想唯一条目,'DISTINCT'可能是你在找什么,而不是'GROUP BY' – Qirel

+0

我在where子句后试过不同的,不起作用 – 112233

+0

它是用作'SELECT DISTINCT column1 FROM table ...',而不是在'WHERE'子句之后。 – Qirel

回答

0

试试这个:

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。

问候

托马斯

0

尝试,而不是这个

SELECT DISTINCT location, id FROM `table_name` WHERE `id` LIKE '%'.$id.'%' 

SELECT DISTINCT location, id FROM `table_name` WHERE `id` LIKE :id