Сделать запрос внутреннего результата запроса выбираемым

Мне было интересно, возможно ли с помощью 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)

Sender, Receiver а также Buyer являются EEID. Возможно, я могу использовать функцию, отличную от CONCAT_WS, которая предоставит мне эту функцию.

1 ответ

Решение

Не используйте записи concat_ws в запросе IN, это может не дать правильные данные

concat_ws может отлично работать для запроса IN с целыми числами, но может не работать для строк, потому что они должны быть заключены в кавычки '

попробуйте ниже

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
 )
Другие вопросы по тегам