当我尝试获取“tytul”字段时,我发现此错误
SELECT f.*,
(SELECT MAX(e) FROM seriale WHERE s = MAX(k.s) AND id_serialu = f.id) as e,
MAX(k.s) as s,
(SELECT tytul FROM seriale c WHERE c.s = s AND c.e = e) as tytul
FROM serial f
LEFT JOIN seriale k ON f.id=k.id_serialu
GROUP BY f.id
ORDER BY f.id DESC
LIMIT 25
答案 0 :(得分:0)
我认为你的子查询中需要一些别名。
(SELECT tytul FROM seriale c WHERE c.s = f.s AND c.e = f.e) as tytul
如果您不这样做,则会在最近的范围s
中搜索e
和c
,因此查询将被解释为:
(SELECT tytul FROM seriale c WHERE c.s = c.s AND c.e = c.e) as tytul
这显然会返回多行,因为它会返回表中的所有内容。
但是对于别名,它当然只会起作用,如果seriale
中每个s和e组合最多有1行。
答案 1 :(得分:0)
在select语句中使用子查询时,特定子查询应该只返回1行。
例如:在您的查询中
(SELECT MAX(e) FROM seriale WHERE s = MAX(k.s) AND id_serialu = f.id)
和
(SELECT tytul FROM seriale c WHERE c.s = s AND c.e = e)
应该只返回一个值。它不能返回超过1的值。