'where'语句到动态字段

Sam*_*lva 0 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'
Run Code Online (Sandbox Code Playgroud)

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

请记住,我不想让它成为现实 where c.emp_status = '1'

注意SQLFiddle

希望你能理解我的问题.

谢谢,

问候,

Sameera Silva

fan*_*nts 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'
Run Code Online (Sandbox Code Playgroud)

操作顺序是

  1. 哪里
  2. 通过...分组
  3. HAVING
  4. 订购
  5. 选择

你不能在WHERE子句中有别名.