[英]#1241 - Operand should contain 1 column(s)
In the following query am trying to get one image per category 在以下查询中,我试图为每个类别获取一张图像
SELECT l.*
FROM (
SELECT id AS category_id,
COALESCE(
(
SELECT *
FROM images li
WHERE li.category_id = dlo.id
ORDER BY
li.save_status DESC, li.category_id DESC, li.id DESC
LIMIT 1
), 0) AS mid
FROM cats_imgs dlo where id='1'
) lo
JOIN images l
ON l.save_status = '3'
AND l.category_id >= lo.category_id
AND l.category_id <= lo.category_id
AND l.id >= lo.mid
but keep getting the following error : 但不断出现以下错误:
#1241 - Operand should contain 1 column(s)
Any ideas ? 有任何想法吗 ?
用单个列替换*
images li
I had a similar problem. 我有一个类似的问题。 Your 3rd level select statement (
SELECT * FROM images li
) needs to return a single value, since the 2nd level select statement ( SELECT id AS category_id,COALESCE( ...
) is expecting only one value in its place holder. 您的第三级选择语句(
SELECT * FROM images li
)需要返回一个值,因为第二级选择语句( SELECT id AS category_id,COALESCE( ...
)在其占位符中只期望一个值。
For my case, it worked. 就我而言,它奏效了。 Here I also averaged the data from a second based table (
SecondBasis
) to the values in the one minute basis table ( MinuteBasis
): 在这里,我还将第二个基于表(
SecondBasis
)的数据平均为一分钟为基础的表( MinuteBasis
)中的值:
SELECT MinuteBasis.time, MinuteBasis.avg_t, MinuteBasis.avg_p,MinuteBasis.avg_t2,
(SELECT avg(SecondBasis.m1)
FROM SecondBasis
WHERE SecondBasis.time BETWEEN MinuteBasis.time AND addtime (MinuteBasis.time,'0 0:00:59'))
(SELECT avg(SecondBasis.m2)
FROM SecondBasis
WHERE SecondBasis.time BETWEEN MinuteBasis.time AND addtime (MinutBasis.time,'0 0:00:59'))
FROM MinuteBasis
WHERE MinuteBasis.time BETWEEN '2012-05-02 8:30:00' AND '2012-05-02 8:44:59' ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.