Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 关键字';其中';将MySQL转换为MSSQL时_Php_Mysql_Sql_Sql Server - Fatal编程技术网

Php 关键字';其中';将MySQL转换为MSSQL时

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

所以我试图将一些东西从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 
    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。