0

id、post、statusなどのフィールドを持つ「 posts 」という名前のテーブルがあります。このような投稿のステータスで投稿数を取得するクエリを作成したい

------------------------------
| published | draft  | trash | 
------------------------------
| 150       |  15    |  0    |
------------------------------

私を助けてください :

4

5 に答える 5

1
SELECT   status, COUNT(*)
FROM     posts
GROUP BY status
于 2013-10-28T06:16:42.250 に答える
1

SELECT published , COUNT(*) FROM posts WHERE公開された= 150;

また

SELECT published , COUNT(*) FROM posts;

于 2013-10-28T06:17:15.627 に答える
1
SELECT status, COUNT(*) count FROM posts GROUP BY status

これはより典型的なもので、次のようになります。

-----------------------
| status    | count   | 
-----------------------
| published |  150    |
-----------------------
| draft     |  15     |
-----------------------
| trash     |  0      |
-----------------------

要求したテーブルが正確に必要な場合は、

SELECT SUM(CASE status WHEN 'published' THEN 1 ELSE 0 END) published,
    SUM(CASE status WHEN 'draft' THEN 1 ELSE 0 END) draft,
    SUM(CASE status WHEN 'trash' THEN 1 ELSE 0 END) trash
FROM posts 
于 2013-10-28T06:14:56.587 に答える
0

あなたが表示するように、完璧なソリューション:

**

SELECT SUM(main_a.published) as published, SUM(main_a.draft) as draft, SUM(main_a.trash) as trash FROM (SELECT 
      IF (`status`= 'published' ,COUNT(*), 0 ) AS published, 
      IF (`status`= 'draft' , COUNT(*) , 0) AS draft,
      IF (`status`= 'trash', COUNT(*) , 0) AS trash  FROM posts GROUP BY `status` ) main_a

**

テーブル構造は次のようにする必要があることに注意してください。

CREATE TABLE `posts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `post` text,
  `status` enum('published','draft','trash') DEFAULT NULL,
  PRIMARY KEY (`id`)
) 
于 2013-10-28T06:40:22.733 に答える