簡體   English   中英

如果至少一行與MySQL中的條件匹配,則檢索所有組記錄

[英]Retrieve all the group records if at least one row matches the condition in MySQL

我已經通過一系列SQL查詢創建了下表,現在,如果組中至少有一行符合條件,則需要檢索記錄。 在此處輸入圖片說明

例如,如果設備狀態至少之一為FAILED,我將不檢索所有組記錄。 在我在此處提供的示例中,除了MERCHANT_ID c0030-10155511(兩個設備都處於成功狀態)之外,我將不會檢索其他記錄,其中至少一個設備及其成功設備都發生了故障。 例如,由於只有一個設備發生故障,因此需要獲取MERCHANT_ID c0040-10196477的兩條記錄。

我們如何在MySQL中實現這一目標。

嘗試這個

SELECT
    *
FROM
    yourTable
WHERE
    merchant_id IN
    (
        SELECT
            merchant_id
        FROM
            yourTable
        WHERE
            state LIKE '%FAILED')

可以說,您的表名是device_table

SELECT * 
FROM device_table d1 
WHERE EXISTS (
  SELECT * 
  FROM device_table d2 
  WHERE d2.state like '%FAILED' 
        AND d1.merchant_id = d2.merchant_id
)

如果狀態列為enum類型,則查詢可以寫為

SELECT * 
FROM device_table d1 
WHERE EXISTS (
  SELECT * 
  FROM device_table d2 
  WHERE d2.state in ('DOWNLOAD_FAILED', 'INITIATE_FAILED', etc...) 
        AND d1.merchant_id = d2.merchant_id
)

要么,

SELECT * 
FROM device_table d1 
WHERE EXISTS (
  SELECT * 
  FROM device_table d2 
  WHERE d2.state not in ('INITIATE_SUCCESS') 
        AND d1.merchant_id = d2.merchant_id
)

暫無
暫無

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

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