我正在尝试编写一个查询,该查询将返回SAKILA数据库中所有以法语为原始语言的电影。预期的结果是0行。
当我使用//
查找以法语作为语言的标题时,我得到了预期的结果:
language_id
然而,
我试图在不使用文字SELECT title, release_year FROM sakila.film WHERE language_id =5;
的情况下获得此结果,而是加入两个表格来选择电影的原始语言。
当我写:
(language_id)
我得到所有行。
答案 0 :(得分:0)
您没有在两个表之间指定任何连接条件。因此,查询生成的是笛卡尔积,绝对不是您想要的。
如果您使用ANSI样式的连接,语法会让您朝正确的方向推动:
select f.title, f.release_year
from film f
join language l
on l.language_id = f.language_id -- you are missing this join condition
and l.name = 'french'
答案 1 :(得分:0)
如果您不想使用join,则需要在其中添加一个条件。
SELECT T1.title, AVG(V.vote) AS avg_vote
FROM posts T1
JOIN (
SELECT *
FROM (
SELECT v.*, @r := IF(@p = post_id, @r+1, 1) AS rownum, @p := post_id
FROM (SELECT @p:=null, @r:=0) AS _init
CROSS JOIN votes v
ORDER BY v.post_id, v.id DESC
) AS t
WHERE t.rownum <= 10
) AS V ON T1.id = V.post_id
GROUP BY T1.id;