sql >> Databasteknik >  >> RDS >> Mysql

ASP MVC MsSql till MySQL migrering

Är du säker på att din andra fråga verkligen är OK?

1) Id =d.Id, <=Varför detta kommatecken (inte riktigt viktigt)? ('ID =' är redundant)

2) .Where(m => m.Trash ==false) <='Trash' finns inte i urvalet, så den här egenskapen är inte känd just nu

3) .OrderByDescending(f => f.Created) <=idem för 'Created'

4) Varför ett kommatecken efter .ToList()?

Jag har förenklat din DDL (som inte är en MWE) med genererad data. Jag har återskapat ditt problem i VS2013.

Jag har också testat din fråga med LINQPad direkt mot databasen och jag har samma problem med det tredje testet, förmodligen en bugg i drivrutinen mysql:

trdposts.Select(a => new {
    Created = a.Created,
    Body = a.Body,
    Comments = a.Posttrdcomments
                .Select(d => new { Body = d.body, Id = d.Id, d.Created, d.Trash})
                .Where(m => m.Trash == 1)
                .OrderByDescending(f => f.Created)
                .Skip(33)
                .Take(10)
                .ToList()
    })

Ge en kortare SQL-fråga:

SELECT t1.PostId, t1.body, t1.Id, t1.Created, t1.Trash
FROM trdposts AS t0
    OUTER APPLY (
      SELECT t2.body, t2.Created, t2.Id, t2.PostId, t2.Trash
      FROM trdcomments AS t2
      WHERE ((t2.PostId = t0.Id) AND (t2.Trash = 1))
      ORDER BY t2.Created DESC
  ) AS t1
ORDER BY t1.Created DESC

Utan .Skip() och .Take() får vi bra 'LEFT OUTER JOIN'



  1. Skapa mysql-tabell direkt från CSV-fil med CSV Storage-motorn?

  2. Inkluderar värden som INTE FINNS i MySQL-frågeresultat

  3. Vilket tillvägagångssätt är snabbare för att få alla POIs från MySQL/MariaDB med PHP/Laravel

  4. Förstå SQL Server alltid krypterad