簡體   English   中英

將同一張表上的查詢合並為一個查詢

[英]Combining queries on the same table in to one query

我想從我的MySQL表中獲取一些統計信息,並希望將其保留在單個查詢中。 只是不知道如何(甚至可能)。 我有以下兩個查詢:

SELECT COUNT(*) AS `accept` 
FROM `status` 
WHERE `groupID` IN (98779,98780) 
  AND `group` = 'order' 
  AND `status` = 'accept'

SELECT COUNT(*) AS `price` 
FROM `status` 
WHERE `groupID` IN (98779, 98780) 
  AND `group` = 'quotation' 
  AND (`status` = 'final' OR `status` = 'manualprice')

我最好的建議是將它們合並到一個單獨的SELECT如下所示:

SELECT
    (SELECT COUNT(*) AS `accept` 
     FROM `status`
     WHERE `groupID` IN (98779, 98780) AND `group` = 'order' AND `status` = 'accept') AS accept,
    (SELECT COUNT(*) AS `price` 
     FROM `status` 
     WHERE `groupID` IN (98779, 98780) AND `group` = 'quotation' AND (`status` = 'final' OR `status` = 'manualprice')) AS price

有沒有更好的辦法?

這是另一種方式

SELECT  SUM(`group` = 'order' AND `status` = 'accept') AS `ACCEPT`,
        SUM(`group` = 'quotation' AND (`status` = 'final' OR `status` = 'manualprice')) AS `PRICE`
FROM    `status`
WHERE   `groupID` IN (98779, 98780) AND
        `group` IN ('order', 'quotation') AND
        `status` IN ('accept', 'final', 'manualprice')
SELECT 
    sum(if(`group` = 'order' AND `status` = 'accept', 1,0)) as `accept`,
    sum(if(`group` = 'quotation' AND (`status` = 'final' OR `status` = 'manualprice'), 1,0)) as `price`
FROM 
    `status` 
WHERE 
    `groupID` IN (98779,98780) 
    AND `group` IN ('order', 'quotation') 
    AND `status` IN ('accept', 'final', 'manualprice')

編輯這基本上與491243的其他答案相同。我使用了附加的if語句,似乎不一定需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM