제 질문은 this StackOverflow question과 매우 비슷하며 분명히 학습 SQL에서는 common issue입니다. 본질적으로, 기존 테이블 필드를 사용하여 min() 값을 찾으려고합니다. 일반적인 해결책은 다소 자체 참조하는 하위 쿼리를 만드는 것입니다. 나는 내 위의 예에서이 코드를 복사 한 : 내 예에서기존 SQL 쿼리를 기반으로하는 최소값에 대한 자체 조인 사용
select *
from yourtable t1
inner join
(
select min(A) A, id
from yourtable
group by id
) t2
on t1.id = t2.id
and t1.A = t2.A
그러나, 나는 예에 나와있는 하위 쿼리를 사용하여 작동하지 않습니다 있도록 내 SQL 쿼리에 다른 조건의 무리가 . 다른 말로하면, 적절한 쿼리 결과를 얻기 위해 보존하고 사용해야하는 다양한 인수가있는 기존 쿼리가 있습니다. 내가의 기반으로 결과에 존재하지 않는 분 값을 선택하는 것입니다 첫 번째 예제에 나와 일을한다면
select *
from yourtable t1
inner join
(
select min(A) A, id
from *my existing query results*
group by id
) t2
on t1.id = t2.id
and t1.A = t2.A
: 나는 효과적으로 이렇게 몇 가지 새로운 코드를 연결해야합니다 쿼리에 이미 존재하는 다른 조건.
기존 쿼리가 아래에 링크되어 있습니다. 이것은 uc_catalog 뷰를 사용하여 Drupal 7의 Views 모듈에 의해 생성 된 쿼리이다. 내 변경 사항을 적용하려면 hook_views_query_alter()
을 사용하고 있습니다. MYSQL 데이터베이스를 사용하고 있습니다.
편집 : 내가 할 노력하고있어 아마도 더 나은 설명을 기존 쿼리에 와이즈 최소 작업을 첨부하고 조건이 와이즈 작업 내에서 사용하는 WHERE 그것의 이상 복사하는 것입니다. 어떻게해야합니까 보여줄 수 this in this query?
'A (최소) (A) A, id FROM ... GROUP BY ID'는 'A'가 집계되거나 GROUP-BY에 나열되어 있지 않으므로 대부분의 SQL 구현에서는 불법입니다. 명부. MySql 테이블 확장은 그러한 구문을 허용하지만 결과는 예측할 수 없습니다. –
@PM'A'는 집계 된 결과의 별칭입니다. 그것은 단지 멋지고 멋쟁이 다. – Strawberry
@Strawberry - 오른쪽. 알아 차렸어 야 했어. –