根据匹配值选择A列或B列

时间:2017-10-08 15:53:38

标签: mysql sql jdbc

我需要提取字符串的第一部分并将其存储在变量中。

final String[] split = InputValue.split("_", 2);
final String extractedValue = split[0];

现在我需要做这样的事情: 我需要检查extractValue是否为列Emp_Id或Emp_Name

"SELECT Count(*)as count,Emp_Name,Emp_Id FROM Employee WHERE extractedValue=? IN(Emp_Id,Emp_Name)";

preparedStatement.setString(1, extractedValue);

我收到错误在Employee表中没有这样的列。

如何在此处检查匹配的列值? 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

嗯,你的SQL很奇怪,因为你要返回COUNT(*)以及两个未聚合的列。

您想要的语法是:

SELECT Count(*) as count, Emp_Name, Emp_Id
FROM Employee
WHERE ? IN (Emp_Id, Emp_Name);

但是,我会从Emp_Name中删除Emp_IdSELECT。或者也许这样做:

SELECT Count(*) as count,
       GROUP_CONCAT(DISTINCT Emp_Name) as Emp_Names,
       GROUP_CONCAT(DISTINCT Emp_Id) as Emp_Ids
FROM Employee
WHERE ? IN (Emp_Id, Emp_Name);
相关问题