반응형
일부 기준에 따라 행을 반환하고 조건과 일치하는 행이 없으면 mariadb sql의 모든 행을 반환합니다.
여기서 몇 가지 기준에 따라 행을 가져오려고 합니다.제가 원하는 것은 일치하는 기준으로 사용 가능한 행이 있으면 해당 행을 얻고 일치하지 않으면 모든 행을 반환하는 것입니다.
아래는 저의 질문입니다.
SELECT t.* FROM
CASE
WHEN (SELECT COUNT(*) FROM users WHERE user_name LIKE '%10%' > 0)
// Line 3
THEN
(SELECT * FROM users WHERE user_name LIKE '%10%' LIMIT 0,10)t
ELSE
(SELECT * FROM users LIMIT 0,10)t
END
3행에서 구문 오류가 발생합니다.
사용할 수 있습니다.UNION ALL
:
(SELECT u.*
FROM users u
WHERE u.user_name LIKE '%10%'
LIMIT 0, 10
) UNION ALL
(SELECT u.*
FROM users u
WHERE NOT EXISTS (SELECT 1 FROM users u2 WHERE u2.user_name LIKE '%10%')
LIMIT 0, 10
) ;
사용할 수도 있습니다.OR
:
SELECT u.*
FROM users u
WHERE u.user_name LIKE '%10%' OR
NOT EXISTS (SELECT 1 FROM users u2 WHERE u2.user_name LIKE '%10%')
LIMIT 0, 10
당신은 mariadb를 사용할 수 있습니다.if-then-else
진술
IF (SELECT COUNT(*) FROM users WHERE user_name LIKE '%10%') > 0
SELECT * FROM users WHERE user_name LIKE '%10%' LIMIT 0,10
ELSE
SELECT * FROM users WHERE user_name
END IF;
언급URL : https://stackoverflow.com/questions/57987073/returning-rows-based-on-some-criteria-and-if-no-row-match-the-criteria-then-retu
반응형
'programing' 카테고리의 다른 글
NHibernate에서 드라이버를 생성할 수 없습니다.드라이버.Oracle Data Client 드라이버 (0) | 2023.07.22 |
---|---|
valgrind - 주소 ---- 크기가 8인 블록이 할당된 후 0바이트입니다. (0) | 2023.07.22 |
Redis - 클러스터를 사용하여 데이터 손실 방지(가십 프로토콜 사용) (0) | 2023.07.22 |
스프링에서 주석을 통해 생성자에 매개변수 주입 (0) | 2023.07.22 |
변수 집합을 임시 테이블 데이터로 채우기 (0) | 2023.07.22 |