我有一个 MySQL 表,其中包含 id 和 name 等列。我只想在变量中取一个值,有时是 id,有时是 name。如何检查两列中的值?
我尝试过这样的事情:
select count(*) from topic where (name= '"+ name + "' or id='"+name+"')
变量名相同,所以我必须检查两列。
您可能想使用LIKE
而不是=
您应该能够在SELECT
子句中添加您想要的值。
尝试这个:
SELECT COUNT(1) count, name, id
FROM topic
WHERE (name= '"+ name + "' or id='"+name+"')
ID的数据类型是什么。如果它是一个 int,那么你不需要 id 周围的单引号。此外,您的语句中不需要括号。如果此语句在 Java 程序中,则必须用双引号将所有内容括起来。
杰森·波西特
如果您正在检查您想要的名称:
select count(*) from topic where (name= '"+ name + "');
如果你正在检查你想要的 id:
select count(*) from topic where (id= '"+ name + "');
那么你想像这样使用“case when 语句”:首先定义
column_to_match to be = 'name' or = 'id' depending on your scenario
然后
select count(*) from topic where (case column_to_match when 'name' then name= '"+ name + "' when 'id' then id= '"+ name + "' end case);
我建议您将 name 变量重命名为 val