我正在使用此代码来计算数据库中的条目,其中我将指定列的默认值。在前端,用户可以将该列的值更改为随机的字母数字。现在我必须计算用户更改了多少条目。我在jdbc中尝试了下面的代码,同时将mysql链接到它:
select * from complaints where RID=11120059 where permanent_token !='0';
select * from complaints where RID=11120059 where not permanent_token ='0';
但没有一个有效。我将varchar的默认值赋予permanent_token为' 0'。
答案 0 :(得分:0)
您的请求中有两个错误。
where
<>
例如,您的第一个请求:
select * from complaints where RID=11120059 and permanent_token <>'0';
并计算结果:
select count(*) from complaints where RID=11120059 and permanent_token <>'0';
答案 1 :(得分:0)
问题:
您在查询中使用了2个where
子句。即使您删除了额外的where
子句,也必须执行两个查询来获取每个查询的计数。
<强>解决方案:强>
这将为您提供一个查询中的记录总数。
select SUM(CASE WHEN permanent_token = '0' THEN 0 ELSE 1 END) as NotZeroCount,
SUM(CASE WHEN permanent_token = '0' THEN 1 ELSE 0 END) as IsZeroCount
from complaints
where RID=11120059
答案 2 :(得分:0)
首先尝试大声说出你的问题,“从RID等于11120059并且永久信号不等于0的投诉中获取所有记录”,这可能转化为类似......
select * from complaints where RID=11120059 and permanent_token <> '0';
将返回与您的查询匹配的所有记录,如果您只想知道与您的查询匹配的条目数量,您只需使用
select count(*) from complaints where RID=11120059 and permanent_token <> '0';
我还建议您使用PreapredStatement
,有关详细信息,请参阅Using Prepared Statements
虽然MySQL允许!=
和<>
,但<>
通常被其他数据库广泛接受
答案 3 :(得分:-1)
尝试更改:
select * from complaints where RID=11120059 where permanent_token !='0';
对此:
select count(*) from complaints where RID=11120059 and permanent_token <> '0';