我有一个简单的过程,当另一个表有行时应该返回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为UNSIGNED)不起作用。如何修复?
答案 0 :(得分:1)
您正在混合CASE
表单。从var
移除CASE var
,或从您的条件中移除var
。
您执行此操作的方式,在var = 0
时,您将var (0)
与var > 0 (0)
进行比较,并选择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