簡體   English   中英

MySQL查詢-選擇具有特定值的不同值,按

[英]mysql query - select distinct value where it has a specific values , group by

我目前有

SELECT * FROM bidders 
WHERE status='0' 
AND email IS NOT NULL 
GROUP BY `bid_user` 
ORDER BY 'bid_price' DESC

我的問題是“ bid_user”可能存在於具有不同狀態(狀態= 1或狀態= 0)的不同行中。 我想知道是否有可能僅選擇*行,其中status = 0且不存在bid_user,而status = 1則不存在上述條件(並且電子郵件不為空, bid_user ORDER BY'bid_price (DESC)。 我可以使用PHP + 2 mysql查詢解決此問題,但是在mysql中具有確切的查詢會更好。

如您所願* status='0'並且email IS NOT NULL行不要使用GROUP BY

SELECT * FROM bidders 
WHERE status='0' 
AND email IS NOT NULL 
ORDER BY 'bid_price' DESC

編輯(根據@Michael的評論)

數據

id  bid_price  bid_user status
1   100        test      0
2   200        test      1
3   300        test2     0

需要O / P

id  bid_price  bid_user status
3   300        test2      0

SQL查詢

   SELECT * FROM bidders 
     WHERE bid_user NOT IN (select DISTINCT `bid_user` FROM `bidders` where status='1') 
       AND email IS NOT NULL 
     ORDER BY 'bid_price' DESC

您可以通過將“ status ='0'”條件替換為“ status ='0'OR(status ='1'AND bid_user為NULL)”來完成此操作

假設您在bid_userstatus上具有索引,則該替代方案可能會更好地執行:

SELECT 
  b.* 
FROM 
  bidders b
WHERE 
  status='0' 
  AND email IS NOT NULL 
  AND not exists (
    select 1 from bidders bx where bx.status='1' and bx.bid_user = b.bid_user
  )
ORDER BY 'bid_price' DESC

暫無
暫無

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

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