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

标签 mysql sql jdbc

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

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

现在我需要做这样的事情: 我需要检查 ExtractedValue 是否为列 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);

我收到错误“员工表中没有此类列”。

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

最佳答案

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

您想要的语法是:

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

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

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);

关于mysql - 根据匹配值选择 A 列或 B 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46633058/

相关文章:

java - 如何在没有 ResultSet 的情况下获得等效的 ResultSetMetaData

mysql - tomcat jdbc 故障转移主机

java - Tomcat 连接池、空闲连接和连接创建

php mysql 选择列并与不同表中的3个值进行比较

mysql - 在一个查询SQL中删除两个表中的记录

javascript - 如何分配 key :value pairs from SQL to JavaScript Object using PHP?

sql - Postgresql to_char 添加字符到日期

mysql - 从 MySql 中的列中选择不同的值

mysql - 如何在mysql中两次选择1个表中的同一列

mysql - mysql中使用子查询连接两个表