레이스 결과 테이블이 있다고 가정 해 봅니다. 표는 Date (xxxx-xx-xx의 MySql 날짜 형식), First, Second, Third, Fourth, Fifth 및 Sixth로 명명 된 상위 6 명의 피니셔 이름에 대해 각각 하나의 열로 구성된 7 개의 열로 구성됩니다. 여러 가지 결과 세트가 있고 다양한 피니셔 열에 100 가지 정도의 다른 이름이있을 수 있습니다. 피니셔 란 (첫 번째, 두 번째, 세 번째, 네 번째, 다섯 번째, 여섯 번째)에 이름이 표시된 각 사람을 이름이 표시된 최신 날짜와 함께 나열 할 수있는 쿼리가 필요합니다. 필자는 마무리 장소에 따라 별도의 결과가 필요하지 않으므로 함께 처리하는 6 개의 피니셔 열이 모두 필요합니다. 대부분의 이름은 수십 개의 서로 다른 날짜에 표시되지만 각 이름이 표시된 가장 최근의 날짜 만 필요합니다. 이상적인 결과는 가장 최근의 것부터 가장 최근의 것까지 정렬 된 각 이름과 가장 최근의 완료 날짜 목록을 생성합니다. 나는 이것을 보여주기 위해 바이올린을 만들려고했지만 어떤 이유로 든 바이올린에서 제대로 작동하는 날짜를 얻을 수 없었습니다. 어쨌든, 이것에 대한 도움을 줄 수있는 사람이라면 누구나 크게 감사 할 것입니다.단일 테이블에서 여러 열을 사용하는 복잡한 쿼리
답변
SELECT <table>.date, <table>.first as name FROM <table> GROUP BY name
UNION DISTINCT
SELECT <table>.date, <table>.second as name FROM <table> GROUP BY name
UNION DISTINCT
SELECT <table>.date, <table>.third as name FROM <table> GROUP BY name
UNION DISTINCT
SELECT <table>.date, <table>.fourth as name FROM <table> GROUP BY name
UNION DISTINCT
SELECT <table>.date, <table>.fifth as name FROM <table> GROUP BY name
UNION DISTINCT
SELECT <table>.date, <table>.sixth as name FROM <table> GROUP BY name
ORDER BY date
사실, 이것은 가깝지만 일부 항목은 완전히 건너 뜁니다. 예를 들어 해당 열에 104 개의 고유 한 이름이 있지만 쿼리는 29 개의 행만 반환합니다. 각 고유 한 이름에 대해 가장 최근 날짜가있는 104 개의 행이 있어야합니다. –
데이터를 설정하지 않았으므로 조정되지 않았습니다. –
나는 약간의 땜질 또한했다. 나는 단지 29 행만 보여주는 것에 대해서는 틀렸어. 그건 내 실수 였어. 이 쿼리는 모든 행을 반환합니다. 예를 들어 "Tom Davis"가 결과 집합에 43 번 나타나면이 쿼리는 가장 최근의 결과를 반환하기보다는 개별 행으로 43 개 모두를 반환합니다. 가장 최근의 각 이름 만 필요합니다. 고유 한 이름에 대해 하나씩, 그리고 각 이름에 대해 가장 최근에 _ 생한 행이 104 행을 리턴해야합니다. –
이렇게하면 필자가 필요한 결과를 얻을 수있었습니다. 필자는 근본적으로 피니셔를 잡기 위해 "이름"을 사용했고, 6 개의 열 모두를 질의했을 때 각 "이름"에 대한 가장 최근의 표시만을 고르는 "MAX (날짜)"를 사용했습니다. 레이스 노조
SELECT name, MAX(Date) as last
FROM (
SELECT first name,Date FROM Results
UNION ALL
SELECT second, Date FROM Results
UNION ALL
SELECT third, Date FROM Results
UNION ALL
SELECT fourth, Date FROM Results
UNION ALL
SELECT fifth, Date FROM Results
UNION ALL
SELECT sixth, Date FROM Results) Q
GROUP BY name
ORDER BY last ASC;
선택 t.first에서 a.date는 (제 1 (별개의 선택)를 선택한 경주 조합부터) 구분 (제 선택한 경주 조합에서 (초) 별개 레이스 조합에서) (별개의 세번째 선택 선택 인종 조합과 별개의 (다섯 번째) 인종 차별 (여섯 번째) 인종 선택, t. 인종 a. 처음에는 (a.first, a.second, a.third, a.fourth, a.fifth, a.sixth)
- 1. mySQL에서 복잡한 쿼리 (여러 테이블에서 사용자 검색)
- 2. 단일 테이블에서 여러 테이블 INSERT 쿼리
- 3. 여러 호출을 사용하는 일반 쿼리 PHP 처리를 사용하는 복잡한 쿼리
- 4. 하나의 테이블에서 복잡한 SQL 쿼리
- 5. symfony doctrine의 여러 테이블에서 여러 열을 가져 오는 쿼리
- 6. 단일 테이블에서 다중 열 조건으로 쿼리
- 7. SQL 쿼리 조건을 기반으로 두 테이블에서 여러 열을 선택하려면
- 8. PostgreSQL 단일 쿼리 단일 행 SELECT JOIN이없는 두 테이블에서
- 9. 동일한 테이블에서 여러 열을 선택하십시오.
- 10. 여러 테이블에서 개수를 사용하는 MySQL 쿼리
- 11. GROUP BY 여러 열을 사용하는 쿼리
- 12. MySQL UNION 및 ORDER - 단일 테이블에서 여러 SELECT 쿼리
- 13. 여러 테이블에서 선택 쿼리
- 14. 여러 테이블에서 삭제 쿼리
- 15. 여러 테이블에서 행 쿼리
- 16. 여러 테이블에서 열을 검색하는 방법
- 17. 여러 테이블에 걸친 복잡한 쿼리
- 18. 여러 데이터베이스에 저장된 테이블에서 기본 키 열을 검색하는 SQL 쿼리
- 19. MYSQL의 모든 테이블에서 단일 열을 삭제하는 방법
- 20. 여러 테이블에서 단일 열 업데이트
- 21. 단일 테이블에서 특정 행 집합을 곱하기위한 쿼리
- 22. 복잡한 정렬을 사용하는 MySQL 쿼리
- 23. 복잡한 조인을 사용하는 SQL 쿼리
- 24. 다른 테이블에서 여러 열을 선택하고 하이브에 참여하십시오
- 25. oracle 테이블에서 여러 개의 NCLOB 열을 정의해도됩니까?
- 26. 테이블에서 중복을 피하는 방법 여러 열을 확인하십시오
- 27. 여러 테이블에서 효과적인 쿼리 만들기
- 28. 같은 테이블에서 2 열을 가져 오는 쿼리
- 29. 단일 열을 여러 열로 분할
- 30. 여러 열을 단일 열로 결합
정규화가 옵션이 아닙니까? – Strawberry