Mysql 其中多列相加超过16

Mysql 其中多列相加超过16,mysql,sql,Mysql,Sql,我正在尝试提取所有有工程师的记录,并且总得分为16分或更高 价值、质量、服务、友好、响应时间都在同一个表中 我正在尝试添加所有这些,并执行一个WHERE 这就是我到目前为止得到的 SELECT *, value_money+quality_service+friendliness+response_time AS overall FROM feedback WHERE engineer LIKE '%Chris Gauden%' AND overall < 16 ORDER BY date

我正在尝试提取所有有工程师的记录,并且总得分为16分或更高

价值、质量、服务、友好、响应时间都在同一个表中

我正在尝试添加所有这些,并执行一个WHERE

这就是我到目前为止得到的

SELECT *,
value_money+quality_service+friendliness+response_time AS overall
FROM feedback
WHERE engineer LIKE '%Chris Gauden%'
AND
overall < 16
ORDER BY date DESC
LIMIT 0, 15

不能在WHERE子句中使用别名。
您必须使用全价值的资金+优质服务+友好性+响应时间组合。

您不能在WHERE子句中使用别名。 您必须使用全价值的资金+优质服务+友好性+响应时间组合。

别名不能用于WHERE。要么

SELECT *,
value_money+quality_service+friendliness+response_time AS overall
FROM feedback
WHERE engineer LIKE '%Chris Gauden%'
AND
value_money+quality_service+friendliness+response_time < 16
ORDER BY date DESC
LIMIT 0, 15

别名不能用于WHERE。要么

SELECT *,
value_money+quality_service+friendliness+response_time AS overall
FROM feedback
WHERE engineer LIKE '%Chris Gauden%'
AND
value_money+quality_service+friendliness+response_time < 16
ORDER BY date DESC
LIMIT 0, 15


不确定您使用的数据库是什么,但请尝试以下操作:

SELECT *,
value_money+quality_service+friendliness+response_time AS overall
FROM feedback
WHERE engineer LIKE '%Chris Gauden%'
AND
SUM(value_money+quality_service+friendliness+response_time) < 16
ORDER BY date DESC
LIMIT 0, 15

不确定您使用的数据库是什么,但请尝试以下操作:

SELECT *,
value_money+quality_service+friendliness+response_time AS overall
FROM feedback
WHERE engineer LIKE '%Chris Gauden%'
AND
SUM(value_money+quality_service+friendliness+response_time) < 16
ORDER BY date DESC
LIMIT 0, 15

因为total不是该表中的一列,所以不能在where子句中引用它

您可以这样做:

SELECT * FROM 
(
    SELECT *,
           value_money+quality_service+friendliness+response_time AS overall
    FROM feedback
    WHERE engineer LIKE '%Chris Gauden%'
) AS ComputedTable
WHERE
    overall < 16
ORDER BY date DESC
LIMIT 0, 15

因为total不是该表中的一列,所以不能在where子句中引用它

您可以这样做:

SELECT * FROM 
(
    SELECT *,
           value_money+quality_service+friendliness+response_time AS overall
    FROM feedback
    WHERE engineer LIKE '%Chris Gauden%'
) AS ComputedTable
WHERE
    overall < 16
ORDER BY date DESC
LIMIT 0, 15

您的服务器可能不支持该功能。如果是这样的话,我可以想出两个选择。子查询:

SELECT * FROM (
SELECT *, value_money+quality_service+friendliness+response_time AS overall
FROM feedback
WHERE engineer LIKE '%Chris Gauden%') AS t
WHERE overall < 16
ORDER BY date DESC
LIMIT 0, 15
或者重复这个等式:

SELECT *,
value_money+quality_service+friendliness+response_time AS overall
FROM feedback
WHERE engineer LIKE '%Chris Gauden%'
AND
value_money+quality_service+friendliness+response_time < 16
ORDER BY date DESC
LIMIT 0, 15

您的服务器可能不支持该功能。如果是这样的话,我可以想出两个选择。子查询:

SELECT * FROM (
SELECT *, value_money+quality_service+friendliness+response_time AS overall
FROM feedback
WHERE engineer LIKE '%Chris Gauden%') AS t
WHERE overall < 16
ORDER BY date DESC
LIMIT 0, 15
或者重复这个等式:

SELECT *,
value_money+quality_service+friendliness+response_time AS overall
FROM feedback
WHERE engineer LIKE '%Chris Gauden%'
AND
value_money+quality_service+friendliness+response_time < 16
ORDER BY date DESC
LIMIT 0, 15

最简单的解决方案是将条件移动到having子句:


这是一个MySQL扩展,在其他数据库中不起作用。

最简单的解决方案是将条件移动到having子句:


这是一个MySQL扩展,在其他数据库中不起作用。

谢谢大家的帮助。我已经解决了,谢谢大家的帮助。我已经解决了,谢谢,我用了第一个例子。