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