1

次のクエリでは、カテゴリごとに 1 つの画像を取得しようとしています

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

しかし、次のエラーが発生し続けます:

#1241 - Operand should contain 1 column(s)

何か案は ?

4

2 に答える 2

6

*の単一の列に置き換えますimages li

于 2012-03-13T11:26:03.557 に答える
0

同様の問題がありました。第 2 レベルの select ステートメント ( ) はプレースホルダーに 1 つの値しか期待していない ため、第3 レベルの select ステートメント ( SELECT * FROM images li) は単一の値を返す必要があります。SELECT id AS category_id,COALESCE( ...

私の場合、うまくいきました。SecondBasisここでも、秒ベースのテーブル ( ) のデータを1 分ベースのテーブル ( 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' ;
于 2013-11-22T10:38:08.570 に答える