2010-03-14 4 views
0

이미지 정보를 저장하는 MySQL 데이터베이스가 있습니다. 현재 데이터베이스에는 3 개의 행만 저장되어 있으며 각 행은 키 열을 통해 고유 한 블로그 게시물과 연결되어 있습니다.MySQL은 GROUP BY 문으로 더 적은 수의 행을 반환합니다.

현재 "블로그 포스트 키"는 하나의 이미지가 있고, 하나는 데이터베이스에 두 개의 이미지가 있습니다.

이 쿼리를 실행할 때 MySQL은 세 행을 모두 반환합니다. 그러나

SELECT `id`, `key`, `url` 
FROM (`images`) 
WHERE `key` = 'TpaS4G5h' 
OR `key` = '78855e44' 

, 나는 두 행 ... 각 키에 대해 하나를 얻을 GROUP BY 문을 추가 할 때.

SELECT `id`, `key`, `url` 
FROM (`images`) 
WHERE `key` = 'TpaS4G5h' 
OR `key` = '78855e44' 
GROUP BY `key` 

나는 간단한 해결책이 있는지 해요,하지만 난 ... 그래서 어떤 도움이 정말 감사하겠습니다 무엇인지 모른다.

미리 감사드립니다.

답변

6

GROUP BY 값별로 그룹화 된 모든 행을 단일 행으로 그룹화하므로 정확하게 수행됩니다. 동일한 키가있는 행을 연속 행으로 반환하려면 ORDER BY을 대신 입력하십시오.

+0

내가 원하는 것은 데이터베이스에서 두 개의 "항목"을 선택한 다음 모든 항목을 해당 항목과 연결하여 데이터를 쉽게 그룹화 할 수있게하려는 것입니다. – bschaeffer

+1

@bschaeffer : 첫 번째 쿼리는 그렇게해야합니다. –

0

이 쿼리에 그룹을 사용할 필요가 없습니다! 선택한 열의 동일한 값을 단일 행으로 그룹화하여 그룹화합니다.

0

첫 번째 쿼리에서 두 개의 키를 지정하고 세 개의 행을 반환하면 키 열에 하나의 중복 목록이 나타납니다. 유효성을 검사하려면

select distinct key from images 

두 행만 표시해야합니다. 즉,이 열을 기준으로 그룹화하면이 키가 공통 인 모든 결과가 표시되는 동작을 설명하는 결과에 롤업됩니다.

0

GROUP BY은 그룹화 기준과 일치하는 행을 단일 행으로 "축소"하는 데 사용되므로 집합 함수를 사용할 수 있습니다.

단일 fetchrow 호출에서 각 키와 관련된 모든 이미지를 검색 할 수 있도록 레코드를 그룹화하려면 GROUP (그룹) BY는을위한 것입니다. 다중 행 기반 데이터 세트를 단일 행으로 변환하려고합니다.

: 당신이하려고했던 모두는 당신에게 다음과 같습니다 데이터 세트를 줄 것이다

SELECT key, group_concat(id) 
FROM images 
WHERE key=XXX or key=YYY 
GROUP BY key 

같은 것을 사용할 수, 행마다 가져 오는 그 이미지의 ID를 검색하고 하나에 그것을했다 경우

key  group_concat(id) 
------------------------ 
xxx  100,101 
yyy  102,103 

하지만 이러한 연결 ID를 별도의 숫자로 구분하려면 스크립트에서 후 처리가 필요합니다.