mysql - 查询在 MySQL 5.1 中有效,但在 SQL2000 中无效

标签 mysql sql sql-server

我正试图从运行在 Win2000 Server SQL Server 2000 v8.00.760 上的旧数据库中提取一些数据,但出现错误。我的查询在我正在使用的当前数据库中工作,但我不知道我在做什么,如果那是问题所在,那不是向后可比的。

这是我的查询:

SELECT o.CustomerID, o.ShipName, o.ShipCity, o.ShipStateOrProvince, o.ShipPostalCode, o.ShipPhoneNumber, c.Profession, SUM( o.Total ) 
FROM Orders o

JOIN Customers c ON o.CustomerID = c.CustomerID

WHERE (o.OrderDate >= '2012-01-01')
AND (o.Void <> - 1)
AND (o.Cancelled <> - 1)

GROUP BY o.CustomerID

在 MySQL 中它工作正常。我正在按照我想要的方式返回查询。但是我得到了错误... enter image description here

当我在较旧的 SQL 版本中尝试时。

我现在有点迷路了。谁能告诉我我做错了什么?

谢谢!

最佳答案

SQL Server 对 GROUP BY 的要求比 MySQL 严格得多。 SELECT 子句中的所有非聚合列也必须出现在 GROUP BY 中。这避免了在例如给定 CustomerID 有多个 ShipName 值时可能发生的歧义。 MySQL 会任意选择一个,而 SQL Server 会强制您将它们视为单独的行。

SELECT o.CustomerID, o.ShipName, o.ShipCity, o.ShipStateOrProvince, o.ShipPostalCode, o.ShipPhoneNumber, c.Profession, SUM( o.Total ) 
FROM Orders o

JOIN Customers c ON o.CustomerID = c.CustomerID

WHERE (o.OrderDate >= '2012-01-01')
AND (o.Void <> - 1)
AND (o.Cancelled <> - 1)

GROUP BY o.CustomerID, o.ShipName, o.ShipCity, o.ShipStateOrProvince, o.ShipPostalCode, o.ShipPhoneNumber, c.Profession

关于mysql - 查询在 MySQL 5.1 中有效,但在 SQL2000 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10179100/

相关文章:

mysql - Ubuntu Mysql-Workbench 中的 Secure--file--priv 错误

MySQL,拆分列数据并通过拆分数据得到结果

c# - SSH.NET 中的 MySQL 端口转发 - 尝试以访问权限禁止的方式访问套接字

Mysql sum 与 group_concat 和连接表

mysql - 在没有 NOT IN 查询的情况下获取不同的记录

java - 如何使用 hibernate4-maven-plugin 生成多种方言模式?

mysql - 将 SQL Server 数据持续推送到 MySQL

sql-server - 无法在数据库中执行此指令 GRANT EXEC sp_configure 给用户

sql - 字符串拆分列并连接到另一个表

mysql - 获取两个 SELECT 语句之间的差异