我有一个简单的程序,它应该在另一个表有行时返回 1,在没有行时返回 0。
BEGIN
DECLARE var INT;
SELECT COUNT(*) FROM myTable INTO var;
CASE var WHEN var > 0 THEN
SELECT 1 as NUMBER;
WHEN var = 0 THEN
SELECT 0 as NUMBER;
END CASE;
END
SELECT COUNT(*) FROM myTable
- 查询返回 0,但过程返回 1,CAST(var as UNSIGNED) 不起作用。如何修复?
最佳答案
你在混合 CASE
形式。从 CASE var
中删除 var
,或从您的条件中删除 var
。
你这样做的方式是,当 var = 0
时,你将 var (0)
与 var > 0 (0)
进行比较code>,匹配,所以选择 1
。
在这里,我将 var
从 CASE
子句中取出,但将其留在 WHEN
子句中:
BEGIN
DECLARE var INT;
SELECT COUNT(*) FROM myTable INTO var;
CASE WHEN var > 0 THEN
SELECT 1 as NUMBER;
WHEN var = 0 THEN
SELECT 0 as NUMBER;
END CASE;
END
关于mysql - MySQL 案例中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28222218/