sql >> Database >  >> RDS >> Sqlserver

Opgeslagen procedure, linker join geeft me dubbele rijen, maar ik wil de bovenste (1) rij voor elke record met dezelfde ID

Eerst was ik op zoek naar iets dat me geen null-kolommen geeft met left join, dus gebruikte ik,

coalesce(TableC.SomeColumn, -1) As SomeColumnHeHe

Toen kwam ik een probleem tegen waarbij ik alleen de top 1 van de linker join moest selecteren, dus ik gebruikte OUTER APPLY, zoals hieronder weergegeven,

SELECT Top(1)
    TableA.*,
        TableB.*,
        someFunction(TableA.ID),
        coalesce(TableC.someColumn, -1) As SomeColumnExample,
        TempTable.IDA
 FROM 
    TableA INNER JOIN TableB ON TableA.ID = TableB.IDA
    OUTER APPLY
         (SELECT TOP(1) * FROM TableC where TableC.IDA = TableA.IDA Order By DateAdded Desc )  As TempTable

Where TableA.ID = @ParaID
Order By TableC.DateTime Desc


  1. Voeg een specifieke id in een automatisch verhoogd veld in MySQL met Entity Framework 5

  2. totale inlog-uitlogtijd van een bepaalde gebruiker berekenen in mysql

  3. Java-opgeslagen procedure aanroepen in Java-programma

  4. MySQL Update rijen met dubbele linker join, beperking van eerste match