В C# это было бы так:Как выбрать первую строку для каждой группы в MySQL?
table
.GroupBy(row => row.SomeColumn)
.Select(group => group
.OrderBy(row => row.AnotherColumn)
.First()
)
Linq-To-Sql переводит его на следующий код T-SQL:
SELECT [t3].[AnotherColumn], [t3].[SomeColumn]
FROM (
SELECT [t0].[SomeColumn]
FROM [Table] AS [t0]
GROUP BY [t0].[SomeColumn]
) AS [t1]
OUTER APPLY (
SELECT TOP (1) [t2].[AnotherColumn], [t2].[SomeColumn]
FROM [Table] AS [t2]
WHERE (([t1].[SomeColumn] IS NULL) AND ([t2].[SomeColumn] IS NULL))
OR (([t1].[SomeColumn] IS NOT NULL) AND ([t2].[SomeColumn] IS NOT NULL)
AND ([t1].[SomeColumn] = [t2].[SomeColumn]))
ORDER BY [t2].[AnotherColumn]
) AS [t3]
ORDER BY [t3].[AnotherColumn]
Но это несовместимо с MySQL.
вы не можете контролировать сервер БД, чтобы увидеть, что запросы C# Выполняет (я какой-то, догадываясь, что ваш синтаксис выше LINQ) – lexu
@Iexu Да, я могу, и я сделал это с MS SQL Server. Но у меня нет Linq-to-MySQL, только Linq-To-Sql –