'其中'对动态字段的陈述

时间:2014-09-16 14:22:41

标签: mysql substring left-join where-clause

美好的一天!,我遇到了一些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

希望你能理解我的问题。

谢谢,

此致

Sameera Silva

1 个答案:

答案 0 :(得分:5)

在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. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. ORDER BY
  6. 选择
  7. WHERE子句中不能包含别名。