2017-04-19 1 views
0

데이터베이스에서 중복 항목을 제거하여 GROUP BY를 사용하려고 생각했지만 LIKE와 작동하지 않는 것 같습니다. 아래는 나의 질문입니다.GROUP BY와 함께 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를 반환하는 것 같지만. 나는 별개 (위치)를 시도했지만 그 결과는 유일한 ID와 동일합니다.

+2

이,'DISTINCT' 당신이 찾고있는 수도의 시도 , 'GROUP BY'가 아님 – Qirel

+0

where 절 뒤에 구별을 시도했으나 작동하지 않습니다. – 112233

+0

It 's 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 
관련 문제