반응형
지정된 값이 열에 있는 행에서 여러 개의 서로 다른 값을 가져오는 Mysqlike
저는 이런 데이터 테이블을 가지고 있습니다.데이터를 보다 자세히 설명합니다.
col0 | col1 | col2 | col3 | col4
======================================
milk | egg | juice | |
egg | juice | | |
bread | jam | juice | |
wheat | egg | juice | |
jam | juice | | |
먼저 모든 열에서 Juice를 검색하고 Juice가 있는 모든 행을 가져오려고 합니다.그러면 가장 고유하고 완전한 데이터가 있는 행을 가져와야 합니다.이 경우 첫 번째 행입니다. 반복되는 단어가 없는 가장 고유하고 완전한 데이터 집합을 가지고 있기 때문입니다.그래서 이 데이터에서 'juice'를 검색하면 이 결과를 원합니다.
milk | egg | juice |
bread | jam | juice |
wheat | egg | juice |
저는 노력했습니다.GROUP BY
그리고.DISTINCT
모든 열 조합에서 원하는 결과를 얻을 수 없었습니다.이 문장을 사용했습니다.
SELECT * FROM `table`
WHERE `col4` = 'juice' OR`col3` = 'juice' OR `col2` = 'juice' OR `col1` = 'juice'
group by `col2`,`col1`,`col0`;
저는 별도의 명세서가 아닌 하나의 명세서로 되어 있으면 좋겠습니다.
그 기능을 사용하시면 됩니다.
그룹에서 연결된 non-NULL 값을 가진 문자열을 반환합니다.
항상 높은 열 번호(col4 > col3 등)에 "가장 완전한 데이터"가 있는 경우,
간단히 할 수 있습니다.LIMIT
결과로 이어지다1
:
SELECT * FROM `table`
WHERE `col4` = 'juice' OR`col3` = 'juice' OR `col2` = 'juice' OR `col1` = 'juice'
LIMIT 1;
여러 열에 중복되는 값이 없고 빈 열이 다음을 사용하여 표시되는 경우NULL
, 그러면 MySQL에 의해 boolean을 int로 암묵적 유형 캐스팅을 활용할 수 있습니다.
SELECT *
FROM your_table
WHERE 'juice' IN (col1, col2, col3, col4)
ORDER BY ( (col1 IS NOT NULL) +
(col2 IS NOT NULL) +
(col3 IS NOT NULL) +
(col4 IS NOT NULL) ) DESC
LIMIT 1
결과
| col0 | col1 | col2 | col3 | col4 |
| ---- | ---- | ----- | ---- | ---- |
| milk | egg | juice | | |
언급URL : https://stackoverflow.com/questions/58239660/mysqli-fetch-multiple-distinct-values-from-rows-where-given-value-is-in-any-colu
반응형
'programing' 카테고리의 다른 글
PHP 7.3 Laravel 데이터베이스 자동 번호 반올림 오류 (0) | 2023.10.13 |
---|---|
경고 NETSDK1071 'Microsoft'에 대한 패키지 참조.AspNetCore.'앱'은 '2.1.6' 버전을 지정했습니다. (0) | 2023.10.13 |
"inline" 키워드 vs "인라이닝" 개념 (0) | 2023.10.13 |
Chrome에서 JavaScript 메모리 누수 찾기 (0) | 2023.10.13 |
Larvel에서 수동 설정으로 데이터베이스와 연결할 수 없습니다. (0) | 2023.10.13 |