[英]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.