programing

일부 기준에 따라 행을 반환하고 조건과 일치하는 행이 없으면 mariadb sql의 모든 행을 반환합니다.

padding 2023. 7. 22. 09:31
반응형

일부 기준에 따라 행을 반환하고 조건과 일치하는 행이 없으면 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

반응형