美好的一天!,我遇到了一些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
答案 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'
操作顺序是
WHERE
子句中不能包含别名。