[英]MS SQL Server equivalent of oracle query
我正在尝试将下面的Oracle特定查询转换为MS SQL Server特定语法。 但是我无法将两个表连接起来,出现错误“关键字“ LEFT”附近的语法不正确”。 请提供以下查询的MS SQL Sever转换格式。 提前致谢。
SELECT UNIQUE
'' log_id,
21043 campaign_Id ,
tbk_campaign.online_campaign_id + ' ' + tbk_campaign.promotion_name email_subject,
'' email_user_id_to_list
FROM DUAL
LEFT OUTER JOIN tbk_campaign c ON 1=1 AND tbk_campaign.campaign_id =21043
SQL Server没有实现DUAL
, DUAL
是存在的神话表,因为每个SELECT
“必须”都具有FROM
子句1 。
您可以将DUAL
替换为以下简单内容:
SELECT DISTINCT '' log_id, 21043 campaign_Id , tbk_campaign.online_campaign_id + ' ' + tbk_campaign.promotion_name
email_subject, '' email_user_id_to_list
FROM (SELECT 1 as a) t
LEFT OUTER JOIN tbk_campaign c ON tbk_campaign.campaign_id =21043
(还结合了Sandip提到的 UNIQUE / DISTINCT变化)
1 SQL Server不是实现DUAL
,而是放宽了要求并允许SELECT
而不包含FROM
子句,如我的回答中的子查询所示。 但是,我相信这些标准确实要求FROM
子句和DUAL
的使用。
我已经更新了您的查询,如下所示,它不会引发任何编译错误。 用DISTINCT
替换UNIQUE
SELECT DISTINCT
'' log_id,
21043 campaign_Id ,
tbk_campaign.online_campaign_id + ' ' + tbk_campaign.promotion_name email_subject,
'' email_user_id_to_list
FROM DUAL
LEFT OUTER JOIN tbk_campaign c ON 1=1 AND tbk_campaign.campaign_id =21043
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.