1

どうすればできますかselect count(artc_id) as cval, max(srt_id) as maxval, artc_title from table where artc_pub = 1

したがって、次のような結果を得ることができます。

       cval | maxval | artc_title | artc_pub
    -----------------------------------------
       4         4     Title 1         1 
                       Title 2         1
                       Title 3         1
                       Title 4         1

私のテーブルの一部は以下です

artc_id | srt_id | artc_title | artc_pub
-----------------------------------------
   1         1     Title 1         1 
   2         2     Title 2         1
   3         3     Title 3         1
   4         4     Title 4         1
   1         5     Title 1         2
   2         6     Title 2         2

試してみselect count(artc_id) as cval, max(srt_id) as maxval, artc_title from table where artc_pub = 1ましたが、最初のタイトルが 1 行しか表示されません。ここには昔ながらの選択以上のものがあるに違いないと思います。

以下のすべての回答により、次のような結果が得られます。

cval;maxval;artc_title
1   ;     1; Title 1
1   ;     2; Title 2
1   ;     3; Title 3
1   ;     4; Title 4
1   ;     5; Title 5

私の質問で言及した方法とは異なります。

4

5 に答える 5

1

集計用とタイトル用の 2 つのクエリを使用する方がよいと思います。

SELECT COUNT(*) AS cval, 
       MAX(srt_id) AS maxval
FROM table 
WHERE artc_pub = 1 ;

SELECT artc_title 
FROM table 
WHERE artc_pub = 1 ;

GROUP_CONCAT()関数を使用して、タイトルを 1 行に結合することもできます。

SELECT COUNT(*) AS cval, 
       MAX(srt_id) AS maxval,
       GROUP_CONCAT(artc_title ORDER BY srt_id SEPARATOR ', ') 
           AS artc_title  
FROM table 
WHERE artc_pub = 1 ;

これら 2 つを結合して結合することもできますが、多くの重複データが返されます。

SELECT ag . cval, 
       ag . maxval, 
       t  . artc_title 
FROM 
    ( SELECT COUNT(*) AS cval, 
             MAX(srt_id) AS maxval
      FROM table 
      WHERE artc_pub = 1 
    ) AS ag
  CROSS JOIN
    table AS t 
WHERE t.artc_pub = 1 ;

MySQL がウィンドウ関数を取得した場合 (楽観主義者はいつ取得するかを読みます)、上記は次のように記述されます。

SELECT COUNT(*) OVER ()    AS cval, 
       MAX(srt_id) OVER () AS maxval, 
       artc_title 
FROM table 
WHERE artc_pub = 1 ;
于 2012-11-13T16:01:36.377 に答える
0

GROUP BYここを使用して、結果を「記事のタイトル」でグループ化できるはずです。

SELECT
    COUNT(artc_id) AS cval,
    MAX(srt_id) AS maxval,
    artc_title
FROM
    table
WHERE
    artc_pub = 1
GROUP BY
    artc_title
ORDER BY
    artc_title;
于 2012-11-13T13:48:53.950 に答える
0

GROUP BY artc_titleそのようです:

select 
  count(artc_id) as cval, 
  max(srt_id) as maxval, 
  artc_title 
from table 
where artc_pub = 1
GROUP BY artc_title
于 2012-11-13T13:49:01.510 に答える
0

グループ化用語が欠落している

 SELECT count(artc_id) AS cval, max(srt_id) AS maxval, artc_title 
       FROM table
       WHERE artc_pub = 1
       GROUP BY artc_title
于 2012-11-13T13:49:21.633 に答える
0

試しましたか>>

select count(artc_id) as cval, max(srt_id) as maxval, artc_title from table where artc_pub = 1 Group By artc_title

これがうまくいくことを願っています。

于 2012-11-13T13:51:30.930 に答える