[英]MySQL query all distinct from column A where none of them has a specific value in column B
[英]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_user
和status
上具有索引,則該替代方案可能會更好地執行:
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.