[英]MySQL Subquery, Help Needed Constructing Select Statement
我在構建選擇查詢時遇到問題。
我有一張桌子,我在下面的簡化版中顯示。 列表比我顯示的列多得多,但我已經省略了那些與此查詢無關的列。
ID ReceiptNo TransactionType
--------------------------------
1 | 2SJ1532 | SALE
2 | 8UG7825 | SALE
3 | 0619373 | SALE
4 | 8UG7825 | RFND
5 | | TEST
我想只選擇那些事務類型為“SALE”的行,其中所選行的ReceiptNo也出現在事務類型為RFND的行中。
所以在上面的例子中我想要選擇第2行。因為它有事務類型SALE,它的ReceiptNo也出現在事務類型為RFND的行中。
我有以下查詢來選擇所有SALE類型的事務類型,但我認為我需要一個子查詢來使選擇工作如上所述。 如果有人能提供幫助,那就太好了。
SELECT * FROM $table_name WHERE RecieptNo IS NOT NULL AND TRIM(RecieptNo) <> '' AND TransactionType = 'SALE'
嘗試這個:
SELECT *
FROM $table_name
WHERE RecieptNo IN(SELECT RecieptNo
FROM tablename
WHERE TransactionType IN('Sale', 'RFND')
GROUP BY RecieptNo
HAVING COUNT( DISTINCT TransactionType) = 2);
這將確保所選的RecieptNo
具有Sale
, RFND
兩種交易類型。
SELECT *
FROM $table_name X1
WHERE X1.TransactionType = 'SALE'
AND EXISTS (
SELECT X2.ReceiptNo
FROM $table_name X2
WHERE X1.ReceiptNo=X2.ReceiptNo
AND X2.TransactionType = 'RFND'
)
SELECT t.*
FROM your_table t
JOIN your_table t2 ON t2.TransactionType = 'RFND' AND t2.ReceiptNo=t.ReceiptNo
GROUP BY t.ID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.