【问题标题】:'where' statement to dynamic field'where' 语句到动态字段
【发布时间】:2014-09-16 14:22:40
【问题描述】:

Good Day!,我遇到了一些 mysql 命令的问题。

根据我下面的示例,我想获取如下数据

SELECT c.*, SUBSTRING_INDEX(v1.c_value, ',', -1) AS e_status
FROM reg_emp AS c
LEFT JOIN default_values AS v1 ON c.emp_status = SUBSTRING_INDEX(v1.c_value, ',', 1) AND v1.category = 'emp_status'
where e_status = 'On Duty'

但这对我不起作用,即使使用 v1.e_status 或 c.e_status

请记住,我不想让它像where c.emp_status = '1'

请查看SQLFiddle

希望你能理解我的问题。

谢谢,

问候,

萨梅拉·席尔瓦

【问题讨论】:

  • 你想要的结果是什么?
  • 有什么问题? “对我不起作用”到底是什么意思?
  • 我从fancyPants得到了正确答案

标签: mysql substring left-join where-clause


【解决方案1】:

在 SQL 语句中,SELECT 子句在 WHERE 子句之后计算。因此,您必须在WHERE 子句中重复该公式:

SELECT c.*, SUBSTRING_INDEX(v1.c_value, ',', -1) AS e_status
FROM reg_emp AS c
LEFT JOIN default_values AS v1 ON c.emp_status = SUBSTRING_INDEX(v1.c_value, ',', 1) AND v1.category = 'emp_status'
WHERE SUBSTRING_INDEX(v1.c_value, ',', -1) = 'On Duty'

操作顺序是

  1. 来自
  2. 在哪里
  3. 分组依据
  4. 订购人
  5. 选择

WHERE 子句中不能有别名。

【讨论】:

  • 非常感谢您的快速回答和很好的问题描述。
猜你喜欢
  • 1970-01-01
  • 2020-09-27
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
  • 2020-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多