Php 关键字';其中';将MySQL转换为MSSQL时
所以我试图将一些东西从MySql转换成MSSQL 2012,问题是我不太了解Sql,不知道这个语句有什么问题。当对MySql数据库运行此命令时,我会得到一个响应,其中包含与MSSQL数据库相同的信息 我得到一个错误: 关键字“where”附近的语法不正确。消息:156,级别:15,状态:1,过程:第11行Php 关键字';其中';将MySQL转换为MSSQL时,php,mysql,sql,sql-server,Php,Mysql,Sql,Sql Server,所以我试图将一些东西从MySql转换成MSSQL 2012,问题是我不太了解Sql,不知道这个语句有什么问题。当对MySql数据库运行此命令时,我会得到一个响应,其中包含与MSSQL数据库相同的信息 我得到一个错误: 关键字“where”附近的语法不正确。消息:156,级别:15,状态:1,过程:第11行 select distinct coalesce(s.state_prov, ls.state_prov, 'State Unknown') as state_prov from
select distinct
coalesce(s.state_prov, ls.state_prov, 'State Unknown') as state_prov
from
circuit_id_locations cid
join
location_states ls
left join
location_states s
on
cid.state_prov = s.abreviation
where
ls.idx = '99'
or
cid.id = '99'
您有一个join语句,但没有“on语句”
>>>MISSING JOIN TYPE (inner/left/right/cross)<<< join
location_states ls
>>>MISSING ON<<<
>>缺少连接类型(内/左/右/交叉)>缺少上如果JOIN
s比ON
子句中的多,请将正常连接转换为交叉连接
,以使其正常工作
select distinct
coalesce(s.state_prov, ls.state_prov, 'State Unknown') as state_prov
from
circuit_id_locations cid
CROSS join
location_states ls
left join
location_states s
on
cid.state_prov = s.abreviation
where
ls.idx = '99'
or
cid.id = '99'
非常感谢。所以,出于我自己的好奇,这只是MySql和MSSql之间有趣的细微差别之一。我想深入了解为什么这对其中一个有效而对另一个无效。但我确信这是我在另一个地方要深入研究的主题MySQL通常会代表您对所需内容进行大量假设,处理类型转换(因此,当您执行'5'/2
时,它将返回2.5
,而SQL Server会抱怨您无法将varchar视为数字,MySQL对布尔表达式也会这样做),甚至让ON
子句成为可选的,因为您并不总是想要一个(并且除非您正在进行外部联接
像您的左外部联接
一样,联接条件也可以很容易地进入where子句)。您可能遇到的其他问题是,SQL Server在分组时要求对非聚合返回列执行group by。