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