2014-10-21 3 views
0

검색 결과에 중복 항목이 포함되어 있지만 이전 검색어를 수정할 수있었습니다. 최신 기록을 검색하고 싶습니다. 예를 들어검색어에서 가장 최근 날짜를 검색합니다.

: 반환 결과는 날짜로 반환되지해야 ID를 2, 3 ID가 1 인 행되어야한다

id | firstname | lastname | email    | date 
    1 | steven | smith | [email protected]  2013-06-10 04:01:25 
    2 | Bill  | Johnson | [email protected] | 2014-06-10 04:01:25 
    3 | steven | smith | [email protected] | 2014-10-10 12:01:25 

는 ID 3 일보다 오래된

어떻게 나는 이것을 아래의 쿼리에 추가합니까?

SELECT 
    users.firstname, 
    users.lastname, 
    DISTINCT(users.email), 
    users.pref 
    FROM (
    SELECT 
     users.firstname, 
     users.lastname, 
     users.email, 
     users.status, 
     users.active, 

     CONCAT(
      users.preference_1, ',', 
      users.preference_2, ',', 
      users.preference_3 
     ) AS pref 
    FROM users 
) AS users 

    WHERE users.status = 1 
    AND users.active = 1 
    AND users.date = (
SELECT MAX(u.date) FROM users AS u WHERE u.email = users.email 
) 
    LIMIT 10000 
+0

(1) 아직도 하위 쿼리를 사용하고있는 이유는 무엇입니까? (2)'concat()'의 문법 오류가 수정되지 않은 이유는 무엇입니까? –

+0

쿼리를 수정 했으므로 하위 쿼리를 사용해야합니다! – meWantToLearn

+0

서브 쿼리를 사용할 날짜 문제 이외의 다른 이유가 있습니까? 나는 DISTINCT와 ORDER BY 키워드를 사용하는 이론적 인 해결책을 가지고있다. –

답변

0

각 사용자의 최신 행을 가져오고 싶습니다.

다음은이를 수행 할 수있는 쿼리입니다. (또한 하위 쿼리를 사용합니다. 그래도 난 CONCAT하는 하위 쿼리 사용에 대한 필요성을 이해하지 못하는)

SELECT DISTINCT us.email, us.preference FROM users AS us WHERE us.date = (
    SELECT MAX(u.date) FROM users AS u WHERE u.email = us.email 
) 

이 원하는 모든 세부 사항을 가져 오지 않습니다. 그러나 실행해야 할 쿼리에 대한 기본 아이디어를 제공합니다.

+0

감사합니다. 질문에 추가했습니다. 쿼리가 결과를 반환하지 않을 때까지 매우 오랜 시간이 걸립니다. – meWantToLearn

+0

뚜렷한 부분을 잊어 버렸습니다. 'DISTINCT (users.email)'을 추가하십시오. 쿼리에 오랜 시간이 걸리는 것은 놀라운 일이 아닙니다. 또한 'MAX (u.date)'이어야합니다. – nightgaunt

+0

cant add distinct, SQL 쿼리 오류 – meWantToLearn

2
  1. 부속 선택에 대한 필요가 없습니다
  2. 추가 : ORDER BY users.date DESC LIMIT 1 당신이 날짜를 기준으로 목록을 정렬하고 "가장 큰/최신"날짜와 함께 한 경우에만 "1 elemet"를 반환이 방법
+0

하나에 병합해야하는 여러 열이 있기 때문에 subselect가 필요합니다. – meWantToLearn

+0

첫 번째 쿼리 자체에서 왜 연결하지 못합니까? '이름, 성, 이메일, CONCAT (환경 설정,', ') AS users.pref'를 선택 하시겠습니까? – nightgaunt

+0

여러 환경 설정 열, preference_1, preference_2, preference_3, preference_4가 있습니다. – meWantToLearn

관련 문제