繁体   English   中英

根据某些条件返回行,如果没有行符合条件,则返回mariadb sql中的所有行

[英]returning rows based on some criteria and if no row match the criteria then return all rows in 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行收到语法错误

您可以使用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;

您可以使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM