2013-12-10 49 views
0

我想知道是否可以使用MySQL以某種方式包裝內部查詢的選擇,以便外部查詢可以在其where子句中使用它。使查詢內部查詢結果可選

SELECT 
`FirstName`, 
`Surname`, 
`AddressLine1`, 
`AddressLine2`, 
`AddressLine3`, 
`AddressLocale`, 
`AddressRegion`, 
`AddressZip`, 
`AddressCountry`, 
`CopyShipAddress` 
FROM `Contacts` 
WHERE `EEID` 
IN 
(SELECT CONCAT_WS(',', `Sender`, `Receiver`, `Buyer`) AS EEID_list 
FROM `Transactions` 
WHERE `TransactionID` = 3) 

SenderReceiverBuyer是EEIDs。也許除了CONCAT_WS之外,還有一個功能可以用來提供這種功能。

+0

您可以添加SQL撥弄的小數據集,它會更容易識別 –

+0

您可以嘗試GROUP_CONCAT – uvais

+0

GROUP _CONCAT('Sender','Receiver','Buyer')返回'125992602'。 我的數據庫裏實際上是1 2599 2602。 –

回答

1

不使用的IN查詢CONCAT_WS記錄,它可能無法給出正確的數據

CONCAT_WS可以很好地工作的用於查詢與整數,而是因爲他們需要被封閉在可能不是字符串工作引號'

嘗試下面代替

SELECT 
`FirstName`, 
`Surname`, 
`AddressLine1`, 
`AddressLine2`, 
`AddressLine3`, 
`AddressLocale`, 
`AddressRegion`, 
`AddressZip`, 
`AddressCountry`, 
`CopyShipAddress` 
FROM `Contacts` 
WHERE `EEID` 
IN 
(
select Sender as eeid FROM Transactions WHERE TransactionId=3 
UNION ALL 
select Receiver as eeid FROM Transactions WHERE TransactionId=3 
UNION ALL 
select Buyer as eeid FROM Transactions WHERE TransactionId=3 
) 
+0

謝謝timus2001。結果不是問題,因爲我可以簡單地使用連接來獲取它。我正在尋找一個可以按要求做的特定功能。 –

+0

感謝CONCAT_WS的單挑。 –

+0

謝謝,我想我會繼續前進並與您的答案一起去。 –