MySQL 到 Microsoft SQL Server 派生表语法

Posted

技术标签:

【中文标题】MySQL 到 Microsoft SQL Server 派生表语法【英文标题】:MySQL to Microsoft SQL Server derived table syntax 【发布时间】:2020-07-03 02:26:53 【问题描述】:

我正在尝试从 FROM 语句中创建的派生表中选择数据。 我在 mysql 中有以下代码:

SELECT  TEMP.State, TEMP.Name

FROM    (SELECT DISTINCT STATE.State, PRODUCT.Name, PRODUCT.Price
        FROM STATE
        JOIN PRODUCT) AS TEMP

我正在尝试在 Microsoft SQL Server 中执行相同的操作,但这不起作用,并出现错误“语法不正确”。我尝试了几种不同的组合,我能找到的任何东西都表明这应该有效。 感谢所有帮助!

【问题讨论】:

在SQL Server中加入时,需要加入“ON”的东西。 缺少连接条件 【参考方案1】:

您当前的 MySQL 子查询似乎是一个交叉连接,因为它是一个没有任何ON 子句的内连接。 SQL Server 不支持这种语法,如果你真的想在这里使用交叉连接,那么使用:

SELECT
    TEMP.State,
    TEMP.Name
FROM
(
    SELECT DISTINCT STATE.State, PRODUCT.Name, PRODUCT.Price
    FROM STATE
    CROSS JOIN PRODUCT
) AS TEMP;

话虽如此,我认为这两个数据库都没有子查询的原因,只需使用:

SELECT DISTINCT s.State, p.Name
FROM STATE s
CROSS JOIN PRODUCT p;

【讨论】:

以上是关于MySQL 到 Microsoft SQL Server 派生表语法的主要内容,如果未能解决你的问题,请参考以下文章

C# Mysql You have an error in your SQL syntax; check the manual that corresponds to your MySQL ser

同样的sql在mysql运行没有问题,在oracle会报不是group by表达式的错

在 Microsoft SQL Server 2005 中模拟 group_concat MySQL 函数?

在 Microsoft SQL Server 2005 中模拟 group_concat MySQL 函数?

从 MySQL 导出并导入 Microsoft SQL

C# - MySQL 与 Microsoft SQL Server [关闭]