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

Pomocí CASE, WHEN, THEN, END ve výběrovém dotazu s MySQL

Select LNext.player As NextPlayer
From lineups As L
    Left Join lineups As LNext
        On LNext.BattingOrder Between 11 And 20
            And LNext.BattingOrder  = Case
                                        When L.BattingOrder  = 19 Then 11
                                        Else L.BattingOrder  + 1
                                        End
Where L.battingOrder Between 11 And 20
    And L.active = 1

Ve skutečnosti byste to mohli zvládnout doma i venku takto:

Select LNext.player As NextPlayer
From lineups As L
    Left Join lineups As LNext
        On LNext.BattingOrder  = Case
                                    When L.BattingOrder  = 19 Then 11
                                    When L.BattingOrder  = 9 Then 1
                                    Else L.BattingOrder  + 1
                                    End
Where L.active = 1



  1. Vytvořte DISTINCT hodnoty v STRING_AGG

  2. Ve stejném sloupci se počítá jiná hodnota

  3. Řešení pro:Příkaz Store update, insert nebo delete ovlivnil neočekávaný počet řádků (0)

  4. Oracle sql:pořadí podle a odlišné klauzule