2012-01-04 2 views
0

흥미로운 상황이 있습니다 - 시스템에 여러 속성이 있으며 그 중 일부는 동일한 주소를 공유합니다. 따라서 number 열과 street 열이 값이 일치하면 (문자열 열의 프로세서로 LOWER()를 사용하게됩니다)이 행의 ID를 원합니다. 또한 일치하지 않는 행을 제외해야합니다.MySQL에서 동일한 열 필드를 가진 행의 ID를 검색하십시오.

문제는 내가 이해할 수 있듯이 GROUP BY 명령을 사용하면 조건에 맞는 각 가정 행의 ID를 검색하지 못하게됩니다. 내 대안은 무엇입니까? 물론 배열의 모든 주소 콤보를 저장하고 ID를 다시 그룹화하기 위해 중복을 선택할 PHP 스크립트를 작성할 수 있지만 더 간단한 방법이 필요합니다.

지금까지 내가 가지고있는 MySQL의 쿼리는

SELECT COUNT(*) as cnt, id FROM homes GROUP BY number, street WHERE cnt>1 

입니다하지만 제대로 CNT> 1 개 부분을 사용하고있는 경우는 잘 모르겠어요 ... 작동하지 않습니다.

편집 :

여기 내 표는 mysql group_concat 기능의 집계와 ID를 유지할 수 있습니다

SQL query: desc homes; 
Rows: 72 
Field Type Null Key Default Extra 
id int(11) NO PRI NULL auto_increment 
masterid int(11) NO NULL 
source int(11) NO MUL 0 
firm_1 varchar(255) NO NULL 
firm_2 varchar(255) NO NULL 
firm_1_id varchar(255) NO MUL NULL 
firm_2_id varchar(255) NO NULL 
firm_phone_1 varchar(255) NO NULL 
firm_phone_2 varchar(255) NO NULL 
firm_fax_1 varchar(255) NO NULL 
firm_fax_2 varchar(255) NO NULL 
realtor_1 varchar(255) NO NULL 
realtor_2 varchar(255) NO NULL 
realtor_phone_1 varchar(255) NO NULL 
realtor_phone_2 varchar(255) NO NULL 
create_date datetime NO NULL 
modify_date datetime NO NULL 
lat varchar(255) NO MUL 
long varchar(255) NO MUL 
sold varchar(255) NO MUL 
feature int(1) NO MUL 0 
mls varchar(10) NO MUL 
ord decimal(7,2) NO 0.00 
type varchar(255) NO MUL 0 
building varchar(255) NO 
price varchar(255) NO 
prevprice varchar(255) NO 
showaddress enum('0','1') NO 1 
unit varchar(255) NO 
number varchar(255) NO 
street varchar(255) NO 
area varchar(255) NO MUL 
city varchar(255) NO MUL 
openhouse varchar(255) NO 
videolink varchar(255) NO 
youtube varchar(255) YES NULL 
youtube1 varchar(255) YES NULL 
remarks int(11) NO 0 
bedroom varchar(255) NO 
bathroom varchar(255) NO 
sqftup varchar(255) NO 
sqftmain varchar(255) NO 
sqftdown varchar(255) NO 
fullbath varchar(255) NO 
halfbath varchar(255) NO 
kitchen varchar(255) NO 
fireplace varchar(255) NO 
parking varchar(255) NO 
storage varchar(255) NO 
style varchar(255) NO NULL 
tax varchar(255) NO 
maintenance varchar(255) NO NULL 
warranty varchar(255) NO NULL 
sqft varchar(255) NO 
lot varchar(255) NO 
depth varchar(255) NO NULL 
rearexposure varchar(255) NO NULL 
basement varchar(255) NO NULL 
suite varchar(255) NO NULL 
view varchar(255) NO NULL 
balcony varchar(255) NO NULL 
rental varchar(255) NO NULL 
construction varchar(255) NO NULL 
frontage varchar(255) NO 
story varchar(255) NO 
year varchar(255) NO 
description text NO NULL 
description2 text NO NULL 
dimension text NO NULL 
heading varchar(255) NO 
publish enum('0','1') NO MUL 0 
views int(11) NO 0 

답변

3

(내림차순 homes 결과)처럼 보이는 방법은 다음과 같습니다 나는 100 % 확실하지 않다

SELECT 
    COUNT(*) as cnt, 
    group_concat(cast(Id as char)) as ids 
FROM 
    homes 
GROUP BY 
    number, street 
HAVING 
    COUNT(*) > 1 
+1

@jeffkee : X가 사각형을 얻는 것처럼 보입니다. +1 !!! – RolandoMySQLDBA

+0

내가이와 아주 이상한 결과를 얻을 : [BLOB - 34B] [BLOB - 14B] [BLOB - 9B] – jeffkee

+0

@jeffkee, 당신이 당신의 게시물에'DESCR의 homes'을 게시 할 수 있습니다 (그리고 끝나면 나에게 경고 해)? – danihp

0

당신이 원하지만 데이타베이스에 집이 중복되어있는 것처럼 들리며 '번호'와 '거리'가 다른 것과 일치하면 복제인지 알 수 있습니다. 행.

그래서 나는이 작업을 수행 할 경우

select id, unit, number, street 
from homes as h1 
where number + '//' + street in 
    (select number + '//' + street from homes as h2 where h2.id <> h1.id and h1.city = h2.city) 

내부 SELECT 문은 "숫자 // 거리"로 (현재 제외한) 모든 행을 반환합니다. 이렇게하면 현재 행의 "숫자 // 거리"가 내부 select 문에있는 값과 일치하는 경우 중복됩니다. 끝에 id 또는 masterid이 주 ID 값인지 확실하지 않았습니다. "23example을가"2 // 예 "와"23 // 예를 들어 "비교로

id  number   street 
1  23    example 
2  2    3example 

이 같은 대신 사용 :이 두 행을 생각하고 쿼리를하지 않는 때문에 '//'는 고유 한 문자열입니다 ".

+0

중복되지 않음 - 일부 타운 홈/아파트의 주소는 같지만 아파트의 #는 다릅니다. masterid는 완전히 여기서 방정식을 벗어났습니다. - 그 모든 것을 잊어 버리십시오. (이것은 전혀 관련이없는 다른 목적을위한 것입니다.) 그래서 제가 # 111 - 123 Main Street, # 305 - 123 Main Street, # 888 - 123 Main Street이 있다고 가정 해 봅시다.이 주택의 ID와 거리 이름 및 번호가 필요합니다. 오하이오. 나는 또한 그들이 같은 도시에있을 필요가있다라고 언급하는 것을 잊었다 (약간의 거리 이름은 여기의 자치 도시에 걸쳐 중복된다.)하지만 기본 구성을 얻은 후 쉽게 WHERE 절을 추가 할 수 있습니다. – jeffkee

+0

어떻게 작동합니까? – Kyra

+0

유일한 숫자/거리 조합인데도 몇 줄이 나옵니다. – jeffkee

관련 문제