(', CROSS, FULL, INNER, JOIN, LEFT, NATURAL, ON, RIGHT 或 USING 预期,得到'WITH'
Posted
技术标签:
【中文标题】(\', CROSS, FULL, INNER, JOIN, LEFT, NATURAL, ON, RIGHT 或 USING 预期,得到\'WITH\'【英文标题】:(', CROSS, FULL, INNER, JOIN, LEFT, NATURAL, ON, RIGHT or USING expected, got 'WITH'(', CROSS, FULL, INNER, JOIN, LEFT, NATURAL, ON, RIGHT 或 USING 预期,得到'WITH' 【发布时间】:2018-08-30 14:23:46 【问题描述】:我有 SQL 请求
这是它的部分代码
LEFT JOIN dbo.contacts_client_organization cog WITH(NOLOCK)
ON cog.clientid = be.clientid
在 cog 之后出现错误
'(', CROSS, FULL, INNER, JOIN, LEFT, NATURAL, ON, RIGHT 或 USING 预期,得到'WITH
我想重写查询以在 Amazon Redshift 上使用它
这是完整的查询
Code of query
我该如何解决?
【问题讨论】:
看起来您正在尝试在 mysql 数据库上使用 SQL Server 特定功能?dbo.xxx
看起来像 SQL Server 语法。你真的在使用 MySQL 吗?另外,请包括整个查询,除非它是大量的,在这种情况下,包括足够的内容来理解这一点。
我尝试重写 MSSQL 查询以在 redshift @TimBiegeleisen 上使用它
pastebin.com/rYGU4uCk 这是完整的请求@TimBiegeleisen
Redshift 使用 PostgreSQL,因此请限制自己使用 PostgreSQL 语法,这样您就可以更接近工作了。 PostgreSQL 文档可在线获取。
【参考方案1】:
在 Redshift(或 Postgres)中不需要 nolock 提示。
由于其底层架构,读取器永远不会阻塞写入器,写入器永远不会阻塞读取器,因此 Redshift 和 Postgres 不需要在 SQL Server 中启用非锁定读取的提示
只需删除WITH(NOLOCK)
反正没有等效项。
【讨论】:
【参考方案2】:在 MSSQL 中,您的查询可以正常工作。但是对于 MYSQL,如果您需要事务隔离,请尝试如下:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
select ...
LEFT JOIN dbo.contacts_client_organization cog WITH(NOLOCK)
ON cog.clientid = be.clientid;
COMMIT ;
【讨论】:
我需要在查询开始时写SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
?
我认为当我使用 Redshift 及其 PostgreSQL 时,它不适合我?
@EugeneSukh 这可能对你有帮助吗? ***.com/questions/2394565/…以上是关于(', CROSS, FULL, INNER, JOIN, LEFT, NATURAL, ON, RIGHT 或 USING 预期,得到'WITH'的主要内容,如果未能解决你的问题,请参考以下文章
SQL中inner join,outer join和cross join的区别
SQL中inner join,outer join和cross join的区别
SQL中inner join,outer join和cross join的区别
Spark SQL 中的 OUTER 和 FULL OUTER 有区别吗?