sql >> Databáze >  >> RDS >> Mysql

Migrace ASP MVC MsSql na MySQL

Jste si jisti, že váš druhý dotaz je opravdu v pořádku?

1) Id =d.Id, <=Proč tato čárka (není ve skutečnosti důležitá)? ('ID =' je nadbytečné)

2) .Where(m => m.Trash ==false) <='Koš' není ve výběru, takže tato vlastnost není v tuto chvíli známa

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

4) Proč čárka za .ToList()?

Zjednodušil jsem váš DDL (což není MWE) pomocí generovaných dat. Váš problém jsem reprodukoval ve VS2013.

Také jsem testoval váš dotaz pomocí LINQPad přímo proti databázi a mám stejný problém s třetím testem, pravděpodobně chyba v ovladači 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()
    })

Zadejte kratší dotaz SQL:

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

Bez .Skip() a .Take() získáme dobré 'LEFT OUTER JOIN'



  1. Proč je velikost tabulky InnoDB mnohem větší, než se očekávalo?

  2. Rails, MySQL a Snow Leopard

  3. MySql nemůže aktualizovat nadřazený řádek, když mám ON UPDATE CASCADE

  4. Jak mohu filtrovat dotaz podle hodinové části pole DateTime v MySQL?