如何从两个 MySQL 数据库列计算一个值以用于 WHERE 子句
How to compute a value from two MySQL database columns for use in WHERE clause
我有一个查询以...
开头
SELECT session_id, time, quantity, teacher, sum(time+(quantity*60*60*60)) AS end FROM my_table WHERE end > 1582214400
我收到 PDO 异常...
column not found: 1054 Unknown column 'end' in 'where clause'
为什么 PDO/MySQL 给我这个错误?计算 end 以便我可以在 WHERE 子句中使用它的正确语法是什么?
您不能在 where
子句中使用来自 select
的别名。使用 having
代替如下:
SELECT session_id, time, quantity, teacher, sum(time+(quantity*60*60*60)) AS end FROM my_table having end > 1582214400
Jens 说得对,您不能像以前那样使用别名 end
。您还可以通过其他几种方式编写查询。由于评论太长,我添加了一个答案。
这是编写查询的另一种方法。请注意,我明确使用了 group by
子句。
SELECT
session_id,
time,
quantity,
teacher,
sum(time+(quantity*60*60*60)) AS end
FROM my_table
GROUP BY
session_id,
time,
quantity,
teacher
HAVING sum(time+(quantity*60*60*60)) > 1582214400
或者您可以使用子查询,这可能效率低下。
SELECT * FROM (
SELECT
session_id,
time,
quantity,
teacher,
sum(time+(quantity*60*60*60)) AS end
FROM my_table
GROUP BY
session_id,
time,
quantity,
teacher
) main
WHERE end > 1582214400
我有一个查询以...
开头SELECT session_id, time, quantity, teacher, sum(time+(quantity*60*60*60)) AS end FROM my_table WHERE end > 1582214400
我收到 PDO 异常...
column not found: 1054 Unknown column 'end' in 'where clause'
为什么 PDO/MySQL 给我这个错误?计算 end 以便我可以在 WHERE 子句中使用它的正确语法是什么?
您不能在 where
子句中使用来自 select
的别名。使用 having
代替如下:
SELECT session_id, time, quantity, teacher, sum(time+(quantity*60*60*60)) AS end FROM my_table having end > 1582214400
Jens 说得对,您不能像以前那样使用别名 end
。您还可以通过其他几种方式编写查询。由于评论太长,我添加了一个答案。
这是编写查询的另一种方法。请注意,我明确使用了 group by
子句。
SELECT
session_id,
time,
quantity,
teacher,
sum(time+(quantity*60*60*60)) AS end
FROM my_table
GROUP BY
session_id,
time,
quantity,
teacher
HAVING sum(time+(quantity*60*60*60)) > 1582214400
或者您可以使用子查询,这可能效率低下。
SELECT * FROM (
SELECT
session_id,
time,
quantity,
teacher,
sum(time+(quantity*60*60*60)) AS end
FROM my_table
GROUP BY
session_id,
time,
quantity,
teacher
) main
WHERE end > 1582214400