Py学习  »  DATABASE

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

IndioJou • 6 年前 • 1431 次点击  

我正在尝试将这个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
文章 [ 1 ]  |  最新文章 6 年前
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 当比赛不止一场时。