简体   繁体   English

#1241-操作数应包含1列

[英]#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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM