MySQL объединение дает приоритет записи из одного из запросов выбора в случае дубликатов - PullRequest
2 голосов
/ 19 октября 2011

Это мой запрос в реальном примере:

     SELECT *
 FROM (

(SELECT Deal.DealID, Deal.TitleEn, Deal.CapNum,Deal.ImageLink,
     SUM( Buy.Quantity ) AS Quantity
 FROM Buy, Deal
 WHERE Buy.DealID = Deal.DealID
 AND Buy.IsFinalBuy =  '1'
 GROUP BY Buy.DealID
HAVING Quantity = Deal.CapNum)

union
(SELECT Deal.DealID, Deal.TitleEn, Deal.CapNum,Deal.ImageLink,NULL AS Quantity
 FROM Deal
 WHERE Deal.EndDate < CURDATE( ) 
)
  )A

  ORDER BY DealID,TitleEn,CapNum,ImageLink,Quantity ASC

Я хочу отдать приоритет записи из первого запроса на выбор в случае дубликатов.

Как это можно сделать?

1 Ответ

1 голос
/ 19 октября 2011

Просто добавьте буквальное значение к каждому, а затем упорядочите его.

SELECT * 
FROM   ((SELECT deal.dealid, 
                deal.titleen, 
                deal.capnum, 
                deal.imagelink, 
                SUM(buy.quantity) AS quantity, 
                'A'               sortby 
         FROM   buy, 
                deal 
         WHERE  buy.dealid = deal.dealid 
                AND buy.isfinalbuy = '1' 
         GROUP  BY buy.dealid 
         HAVING quantity = deal.capnum) 
        UNION 
        (SELECT deal.dealid, 
                deal.titleen, 
                deal.capnum, 
                deal.imagelink, 
                NULL AS quantity, 
                'B'  sortby 
         FROM   deal 
         WHERE  deal.enddate < Curdate()))a 
ORDER  BY dealid, 
          sortby, 
          titleen, 
          capnum, 
          imagelink, 
          quantity ASC 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...