자기 조인을 사용하지 않고 이와 같은 문제를 해결할 수있는 방법이 있습니까? min() 함수를 사용하는 방법은 무엇입니까?최소 날짜가있는 행의 모든 열을 검색 하시겠습니까?
열 c1과 c2의 각 그룹에 대해 첫 번째 과일 항목을 가져오고 싶습니다. 여기
DROP TABLE IF EXISTS test;
CREATE TABLE test
(
c1 varchar(25),
c2 varchar(25),
fruit varchar(25),
currentTime Datetime
);
INSERT INTO test VALUES
('a','b','pineapple','2013-01-28 20:50:00'),
('a','b','papaya','2013-01-28 20:49:00'),
('a','b','pear','2013-01-28 20:51:00'),
('a','c','peach','2013-01-28 18:12:00'),
('a','c','plum','2013-01-28 20:40:00'),
('a','c','pluot','2013-01-28 16:50:00');
내 현재 쿼리입니다 (날짜가 동일하지 않을 수 있습니다 가정) :
SELECT t2.*
FROM (SELECT c1,
c2,
MIN(currentTime) AS ct
FROM test
GROUP BY c1, c2) as t1
JOIN test t2
ON t1.c1 = t2.c1 AND
t1.c2 = t2.c2 AND
t2.currentTime = t1.ct
이 각 c1/c2
쌍에 대한 초기 항목을 얻을 수 있지만, min()
를 사용하고 가입 자체를 방지하는 방법은 무엇입니까 ? 당신이뿐만 아니라 fruit
열을 얻을하려는 경우
MIN이 나머지 쿼리와 함께 작동하지 않으므로 조인/하위 쿼리없이 MIN으로 만 아카이브 할 수 있다고 생각하지 않습니다. 따라서 min의 결과는 자체에서 발생하며 나머지 쿼리에는 영향을주지 않습니다 그 자체. – Prix