计算mysql中与某些东西不相等的条目

时间:2015-08-03 06:57:27

标签: java mysql jdbc

我正在使用此代码来计算数据库中的条目,其中我将指定列的默认值。在前端,用户可以将该列的值更改为随机的字母数字。现在我必须计算用户更改了多少条目。我在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'。

4 个答案:

答案 0 :(得分:0)

您的请求中有两个错误。

  • 首先,您使用两次关键字where
  • 其次,当你想在sql中不等于某些东西时,你必须使用<>

例如,您的第一个请求: 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';