我应该如何在子查询中使用别名才能从subquery
获取列?
select R.date, M.bcr from MMS M
where M.CampaignID in
(
SELECT MR.CampaignID
FROM [Snipp_Receipts].[dbo].[MMS_Receipts] MR
where MR.CampaignID = '0ab109b5'
) R
注意:CampaignID
是两个表中的外键。
我该如何实现? inner join
提供更多记录。 subquery
有136条记录,我必须在MMS table
中获得与单独匹配subquery
条记录相对应的其他字段。
答案 0 :(得分:0)
您不能为IN(...)
中使用的子查询加上别名,也不能在select子句中引用该表的列。您需要执行JOIN操作。
SELECT
M.*
FROM MMS M
WHERE M.CampaignID IN (
SELECT
MR.CampaignID
FROM [Snipp_Receipts].[dbo].[MMS_Receipts] MR
WHERE MR.CampaignID = '0ab109b5'
) /* NO alias allowed here */
使用内部联接
SELECT
M.*
, MR.date
FROM MMS M
INNER JOIN [Snipp_Receipts].[dbo].[MMS_Receipts] MR ON M.CampaignID = MR.CampaignID
WHERE M.CampaignID = '0ab109b5'
答案 1 :(得分:0)
听起来MMS中的单个记录正在加入MMS_Receipts中的多个记录。您可以汇总MMS_Receipts的结果吗?像这样:
SELECT
M.bcr
,max(MR.date) as [date]
FROM MMS M
INNER JOIN [Snipp_Receipts].[dbo].[MMS_Receipts] MR
ON M.CampaignID = MR.CampaignID
WHERE M.CampaignID = '0ab109b5'
GROUP BY M.bcr