簡體   English   中英

MySQL子查詢,需要幫助構建Select語句

[英]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具有SaleRFND兩種交易類型。

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.

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