繁体   English   中英

MS SQL Server相当于oracle查询

[英]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没有实现DUALDUAL是存在的神话表,因为每个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM