Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Złączenie warunkowe mysql zależy od kolumny

nie można warunkowo tworzyć złączeń między tabelami. Najlepszym sposobem jest użycie LEFT JOIN i użyj CASE w swoim SELECT oświadczenie. Musisz określić wspólne kolumny, które chcesz pokazać,

SELECT *,
        (CASE notification_base.type
            WHEN 'photo'
            THEN photo.columnName1
            ELSE post.ColumnName1
        END) as ColumnName1,
        (CASE notification_base.type
            WHEN 'photo'
            THEN photo.columnName2
            ELSE post.ColumnName2
        END) as ColumnName2
FROM notification_action
    INNER JOIN notification_base
        ON notification_action.not_base_id = notification_base.id
    INNER JOIN notification_sub
        ON notification_action.not_base_id = notification_sub.not_base_id
    INNER JOIN photo
        ON photo.id = notification_base.object_id
    INNER JOIN post
        ON post.id = notification_base.object_id
WHERE notification_sub.user_id = 3
    AND notification_sub.lastShowDate < notification_action.creationDate;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Szyny wybierają losowy rekord

  2. Podziel plik mysqldump z wieloma bazami danych według bazy danych

  3. Uszkodzone tabele MySQL InnoDB - jak to naprawić?

  4. Gdzie zmienić wartość small_case_table_names=2 w systemie Windows xampp

  5. Parametr JDBC verifyServerCertificate=false łączy się bez potrzeby posiadania clientkeystore i truststore