[SQL] 어떻게 MAX (날짜)에 의해 선택하는 방법?
SQL어떻게 MAX (날짜)에 의해 선택하는 방법?
이 테이블 구조
CREATE TABLE `reports` (
`report_id` int(11) NOT NULL auto_increment,
`computer_id` int(11) NOT NULL default '0',
`date_entered` datetime NOT NULL default '1970-01-01 00:00:00',
`total_seconds` int(11) NOT NULL default '0',
`iphone_id` int(11) default '0',
PRIMARY KEY (`report_id`),
KEY `computer_id` (`computer_id`),
KEY `iphone_id` (`iphone_id`)
) ENGINE=MyISAM AUTO_INCREMENT=120990 DEFAULT CHARSET=latin1
나는 최근이 date_entered 입력 한에서 COMPUTER_ID 당 REPORT_ID를 나열하는 SELECT 문을해야하고, 어떻게 그렇게하는 단서가 없다. 올바른 방향으로 누구 포인트 나 수 있습니까? 사전에 들으.
해결법
-
==============================
1.이것은을 수행해야합니다
이것은을 수행해야합니다
SELECT report_id, computer_id, date_entered FROM reports AS a WHERE date_entered = ( SELECT MAX(date_entered) FROM reports AS b WHERE a.report_id = b.report_id AND a.computer_id = b.computer_id )
-
==============================
2.당신은 단지 LAST_DATE ENTERED로 시작하여 마지막 date_entered, 또는 순서를 보여주기를 원하는 있습니까?
당신은 단지 LAST_DATE ENTERED로 시작하여 마지막 date_entered, 또는 순서를 보여주기를 원하는 있습니까?
SELECT report_id, computer_id, date_entered FROM reports GROUP BY computer_id ORDER BY date_entered DESC -- LIMIT 1 -- uncomment to only show the last date.
-
==============================
3.https://bugs.mysql.com/bug.php?id=54784 트릭을해야 문자로 캐스팅이에 따르면 :
https://bugs.mysql.com/bug.php?id=54784 트릭을해야 문자로 캐스팅이에 따르면 :
SELECT report_id, computer_id, MAX(CAST(date_entered AS CHAR)) FROM reports GROUP BY report_id, computer_id
-
==============================
4.나는 최대 (date_entered)를 가진이 솔루션을 사용하고 아주 잘 작동
나는 최대 (date_entered)를 가진이 솔루션을 사용하고 아주 잘 작동
SELECT report_id, computer_id, date_entered FROM reports GROUP BY computer_id having max(date_entered)
-
==============================
5.이것은 아주 오래된 질문이지만, 내가 어떤 다른 사람들을 돕기 위해 여기를 떠나고, 그래서 나는 때문에 동일한 문제가 여기에왔다.
이것은 아주 오래된 질문이지만, 내가 어떤 다른 사람들을 돕기 위해 여기를 떠나고, 그래서 나는 때문에 동일한 문제가 여기에왔다.
이 때문에 데이터의 양에 DB를 쿼리하는 데 5 분 이상을 복용했기 때문에 나는 쿼리를 최적화하기 위해 노력했다. 내 쿼리는 허용 대답의 쿼리와 유사했다. 파블로의 의견은 올바른 방향으로 날 밀어 내 오분 쿼리는 0.016 초되었다. 그래서 상관 하위 쿼리를 사용하려고 매우 긴 쿼리 시간을 겪고있는 다른 사람을 도울 수 있습니다.
영업에 대한 예는 다음과 같습니다
SELECT a.report_id, a.computer_id, a.date_entered FROM reports AS a JOIN ( SELECT report_id, computer_id, MAX(date_entered) as max_date_entered FROM reports GROUP BY report_id, computer_id ) as b WHERE a.report_id = b.report_id AND a.computer_id = b.computer_id AND a.date_entered = b.max_date_entered
주석 당신에게 파블로 감사드립니다. 당신은 나에게 큰 시간을 절약!
-
==============================
6.해결 방법하지만 작업 솔루션
해결 방법하지만 작업 솔루션
ID가 자동 증가가 경우에만, 당신은 최대 대신 ID의 최대 날짜를 검색 할 수 있습니다. 그래서, ID에 의해 당신은 다른 모든 필드를 찾을 수 있습니다.
select * from table where id IN ( select max(id) from table group by #MY_FIELD# )
-
==============================
7.나를 위해 완벽하게 작동 :
나를 위해 완벽하게 작동 :
(SELECT content FROM tblopportunitycomments WHERE opportunityid = 1 ORDER BY dateadded DESC LIMIT 1);
-
==============================
8.그것은 나를 위해 잘 작동합니다
그것은 나를 위해 잘 작동합니다
SELECT 보고서 GROUP BY의 COMPUTER_ID로부터, COMPUTER_ID, MAX을 (date_entered) REPORT_ID
-
==============================
9.
SELECT report_id, computer_id, date_entered FROM reports WHERE date_entered = ( SELECT date_entered FROM reports ORDER date_entered DESC LIMIT 1 )
-
==============================
10.최신 블로그를 얻을 수있는 블로그 엔진이나요. 나는 당신의 테이블 구조에 적응.
최신 블로그를 얻을 수있는 블로그 엔진이나요. 나는 당신의 테이블 구조에 적응.
SELECT * FROM reports WHERE date_entered = (SELECT max(date_entered) FROM REPORTS)
from https://stackoverflow.com/questions/7836036/how-to-select-by-maxdate by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 서버는 웹 요청을 보낼 수 있습니까? (0) | 2020.06.09 |
---|---|
[SQL] MS SQL Server에 RODBC 임시 테이블 문제를 연결할 때 (0) | 2020.06.09 |
[SQL] MySQL은 별개의 2 열 조합을 선택 (0) | 2020.06.09 |
[SQL] 각 항목에 대한 JPA 선택 최신 인스턴스 (0) | 2020.06.09 |
[SQL] 는 SQL 서버에서 MySQL을 ON DUPLICATE KEY UPDATE의 등가 (0) | 2020.06.09 |