mysql - 将查询从 MySQL 转换为 SQL Server(包括 GROUP BY)
问题描述
我正在尝试将此 MySQL 查询转换为 SQL Server,但我对 SQL Server 了解不多
SELECT
*
FROM
Table1 AS T1
INNER JOIN Table2 AS T2
ON T1.Column1 = T2.ColumnX
WHERE
T1.ColumnY = 'xxxx'
GROUP BY
T1.Column1
有人可以帮助我吗?
解决方案
您的查询只是一个错误的查询,因为您使用的是select *
with group by
。此查询使用 MySQL 扩展。而且,最新版本的 MySQL 中的默认设置会产生错误。
这是将其转换为 SQL Server 的一种方法:
SELECT TOP (1) WITH TIES *
FROM Table1 AS T1 INNER JOIN
Table2 AS T2
ON T1.Column1 = T2.ColumnX
WHERE T1.ColumnY = 'xxxx'
ORDER BY ROW_NUMBER() OVER (PARTITION BY T1.Column1 ORDER BY (SELECT NULL)) ;
可能更好的方法(从性能角度来看)使用横向连接:
SELECT *
FROM Table1 T1 CROSS APPLY
(SELECT TOP (1) T2.*
FROM Table2 T2
WHERE T1.Column1 = T2.ColumnX
) T2
WHERE T1.ColumnY = 'xxxx' ;
Table2
当有多个匹配项时,这两者都会选择任意行。
推荐阅读
- java - 如何使用多线程持久化 Spring Transactions 和 EntityManager 实体?
- git - git cherry-pick 可以追溯到多远?
- python - Python:如何将多个 Excel 文件合并到一个文件中?(不附加)
- r - 按活动将日历条目转换为每天的时间
- r - 错误:参数既不是数字也不是逻辑:返回 NA
- c# - C# 为什么 Serial.WriteLine() 这么慢?
- html - 对齐框,使其位于父级的右角
- apache-spark - 从 pyspark shell 运行脚本会产生 table not found 错误
- firebase - 无法将数据添加到 Firestore 集合?
- python - 如何使用虚拟环境?