MySQL:排除 CONCAT 条件中的“未知列”错误
在 MySQL 中,CONCAT 函数允许您将多个值连接成一个值单一表达。但是,用户在尝试使用该函数作为 WHERE 子句中的条件时,可能会遇到“未知列”错误。
理解问题
发生该错误的原因分配给串联值的别名(例如,firstlast)未被识别为查询中的有效列。这是因为别名仅应用于查询的输出,并且在查询本身中不可用。
解决方案
要解决此问题,有两种可能的方法:
1。重复表达式:
避免错误的一种方法是在 WHERE 子句中重复 CONCAT 表达式:
SELECT neededfield, CONCAT(firstname, ' ', lastname) AS firstlast FROM users WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones";
此方法可确保连接值与所需的输入。
2.包装查询:
或者,您可以将原始查询包装在子查询中,并为内部查询中的串联值创建别名:
SELECT * FROM ( SELECT neededfield, CONCAT(firstname, ' ', lastname) AS firstlast FROM users ) AS base WHERE firstlast = "Bob Michael Jones";
在这种情况下,别名firstlast被分配给子查询中的串联值,允许它用作外部查询中的条件。
以上是为什么在 WHERE 子句中使用 CONCAT 时 MySQL 会抛出'未知列”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!