将查询从mysql转换为sql server(include group by)

llmtgqce  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(311)

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

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

有人能帮我吗?

9fkzdhlc

9fkzdhlc1#

您的查询只是一个错误的查询,因为您正在使用 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)) ;

可能更好的方法(从性能Angular )使用横向连接:

SELECT * 
FROM Table1 T1 CROSS APPLY
     (SELECT TOP (1) T2.*
      FROM Table2 T2 
      WHERE T1.Column1 = T2.ColumnX 
     ) T2
WHERE T1.ColumnY = 'xxxx' ;

这两种方法都可以从中选择任意行 Table2 当存在多个匹配项时。

相关问题