-2

私はこのMySQLクエリを持っています

            SELECT
                    t1.article_id,
                    t1.user_id,
                    t1.like_date,
                    (
                        SELECT
                                COUNT(*)
                            FROM liketbl t2
                            WHERE
                                t1.article_id=t2.article_id
                ) as totallike
            FROM    liketbl t1
            WHERE
                user_id = 1;

合計エントリ数を使用して、記事 ID、ユーザー ID、いいね! の日付を 1 回の実行で取得する必要があります。サブセレクトは、私の意見では、これを達成するのが最も簡単でした。(クライアント環境で複数のクエリを実行したくありません。しかし、機能していません。理由がわかりません。ヘルプが必要です。

4

4 に答える 4

1

これを試して :

SELECT  t1.article_id,
        t1.user_id,
        t1.like_date,
        COUNT(*) as totallike
FROM liketbl t1 inner join liketbl t2 on t1.article_id=t2.article_id
WHERE user_id = 1
group by t1.article_id,t1.user_id,t1.like_date;
于 2013-08-19T14:51:59.317 に答える
1

スカラーサブクエリは最悪のケースになる傾向があり、通常は書き直した方が効率的です。

両方のテーブルの行数に応じて、これは派生テーブルを使用する別のアプローチです。

SELECT
   t1.article_id
   ,t1.user_id
   .t1.like_date
   ,t2.totallike
FROM liketbl t1
JOIN
 (
   SELECT
      article_id
      ,COUNT(*) AS totallike
   FROM liketbl
   GROUP BY article_id
 ) AS t2
ON t1.article_id=t2.article_id
WHERE
   user_id = 1;
于 2013-08-19T15:16:30.303 に答える
1

私の推測では、user_id = 1期待どおりの結果を得るには、サブクエリでフィルターをかける必要があると思います。

whereのみが外側の選択で動作します。

于 2013-08-19T14:51:04.003 に答える
1

これはうまくいくはずです

 SELECT
                    t1.article_id,
                    t1.user_id,
                    t1.like_date,
                    count(SELECT * FROM liketbl t2 WHERE
                                t1.article_id=t2.article_id ) as totallike
            FROM    liketbl t1
            WHERE
                user_id = 1;
于 2013-08-19T14:51:41.120 に答える