MS SQL Server相当于oracle查询
我想将以下Oracle特定查询转换为MS SQL Server特定语法。但我无法做到这两个表的连接错误'关键字'LEFT'附近的错误语法。请给出以下查询的MS SQL Sever转换格式。提前致谢。MS SQL Server相当于oracle查询
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
,存在因为每个SELECT
“必须” 有一个FROM
条款一个神话般的表。
您就可以使用一些简单的更换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
(也纳入UNIQUE /明显的变化是Sandip mentions)
无需实现DUAL
的,SQL服务器,而不是放宽了的要求,并允许SELECT
s没有FROM
子句,如我的答案中的子查询所示。但是,我相信这些标准确实要求FROM
条款和DUAL
的使用。
谢谢@Damien_The_Unbeliever。 – prathyaksh
我已更新您的查询,如下所示,它不会引发任何编译错误。与DISTINCT
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
谢谢@Sandip Patel。 – prathyaksh
'DUAL'在sql server中不存在(除非你自己创建它) – HoneyBadger
@Honey ..:我认为DUAL是表名,我只在sql中编译没有用execute –
我们不会做你的工作为你更换
UNIQUE
,告诉我们您尝试 – HoneyBadger对不起张贴整个查询。编辑的问题。 – prathyaksh