sql >> Databasteknik >  >> RDS >> Mysql

MySQL förenar sig med fallbeskrivningar

Gör inte fallet på hela den inre kopplingen, gör fallet på endast "på"-satsen i kopplingen. Detta borde fungera (om jag inte har stavfel):

  SELECT 
    conversation.c_id,
    conversation.user_one,
    conversation.user_two,
    users.name,
    users.lastName
  FROM `conversation` 
  INNER JOIN `users`
  on
  users.id =
  CASE
    WHEN conversation.user_one = 1
    THEN conversation.two 
    WHEN conversation.user_two = 1
    THEN conversation.user_one   
 END
 WHERE `user_one` = 1 OR `user_two` = 1

Du kan också uppnå en liknande effekt genom att gå med vänster för vart och ett av dessa villkor och sedan använda case-satsen i din select-sats för att bestämma vilken av de två tabellerna du ska visa poster från.




  1. Hur man hittar om ett värde finns inom en VARRAY

  2. hur använder man xmltable i oracle?

  3. Hämta löpande total rekordtillväxt över tid i mysql

  4. Alternativ till databasdesign med uppräknade kolumner, vilket leder till dåliga prestanda