Trong C# nó sẽ là như thế này:Làm thế nào để chọn hàng đầu tiên cho mỗi nhóm trong MySQL?
table
.GroupBy(row => row.SomeColumn)
.Select(group => group
.OrderBy(row => row.AnotherColumn)
.First()
)
LINQ-to-SQL dịch nó vào mã T-SQL sau:
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]
Nhưng nó không tương thích với MySQL.
thể không bạn giám sát máy chủ DB để xem những gì các truy vấn C thực thi # (tôi một số công trình gì đoán rằng cú pháp của bạn ở trên là LINQ) – lexu
@Iexu Có tôi có thể, và tôi đã làm nó với MS SQL Server. Nhưng tôi không có bất kỳ Linq-to-MySQL, chỉ có LINQ-To-Sql –