社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

将查询从MySQL转换为SQL Server(包括GROUP BY)

IndioJou • 5 年前 • 1248 次点击  

我正在尝试将这个mysql查询转换为sql server,但是我对sqlserver了解不多

SELECT 
  * 
FROM 
  Table1 AS T1 
  INNER JOIN Table2 AS T2 
    ON T1.Column1 = T2.ColumnX 
WHERE 
  T1.ColumnY = 'xxxx' 
GROUP BY 
  T1.Column1

有人能帮我吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43237
 
1248 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Gordon Linoff
Reply   •   1 楼
Gordon Linoff    6 年前

您的查询只是一个错误的查询,因为您正在使用 select * 具有 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 当比赛不止一场时。