mySQL 在具有有效语法的子查询上给出语法错误

标签 mysql sql subquery

我正在尝试查找在不使用限制的情况下租借次数最多的电影。我正在尝试使用以下查询:

SELECT f.title, f.film_id
FROM film f
JOIN inventory i ON f.film_id = i.film_id
JOIN rental r ON r.inventory_id = i.inventory_id
GROUP BY f.film_id
HAVING COUNT(r.rental_id) = MAX(
    SELECT COUNT(r2.rental_id)
    FROM rental r2, inventory i2
    WHERE i2.inventory_id = r2.inventory_id
    GROUP BY i2.film_id);

但是 mySQL 告诉我这里某处有语法错误 SELECT COUNT(r2.rental_id) FROM rental r2, inventory 但是,当我独立运行子查询时,它会返回预期的表。我做错了什么吗?

相关数据库模式:

film(film  id, title, description, release year, language id, original language id, rental duration, rental rate, length, replacement cost, rating, special features, last update)
inventory(inventory id, film id, store id, last update)
rental(rental id, rental date, inventory id, customer id, return date, staff id, last update)

最佳答案

您不能对结果集使用 MAX(),但您可以使用

someValue >= ALL (subquery)

实现您正在尝试的目标,因为 ALL 要求前面的运算符对于集合中的所有值都为真。

试试这个:

SELECT f.title, f.film_id
FROM film f
JOIN inventory i ON f.film_id = i.film_id
JOIN rental r ON r.inventory_id = i.inventory_id
GROUP BY f.film_id
HAVING COUNT(r.rental_id) >= ALL (
    SELECT COUNT(r2.rental_id)
    FROM rental r2, inventory i2
    WHERE i2.inventory_id = r2.inventory_id
    GROUP BY i2.film_id);

关于mySQL 在具有有效语法的子查询上给出语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19372324/

相关文章:

mysql - 如何在查询中选择一个表作为mysql中的变量?

java - 我可以在 JPA 中使用 @Query 的嵌套查询吗?

MySQL第二个基于外键的自增字段

sql - hadoop orc表始终只使用一个映射器

mysql - 如何从mysql中的另一个表按COUNT更新

php - 如何使用php将excel中的日期转换为sql格式?

Mysql 连接过多 : Django sqlAlchemy

python - 无法导入 MySQLdb

sql - Oracle ProC INSERT INTO VALUES ( (选择 ...) )

SQL 按子查询分组