Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да избера вътрешно поле за свързване с IF/case?

Опитайте тази заявка (редактирано ) -

SELECT c.*,
  CASE c.comment_type WHEN 8 THEN p1.photo_p_id WHEN 17 THEN p2.photo_id ELSE NULL END photo_id,
  CASE c.comment_type WHEN 8 THEN p1.column1 WHEN 17 THEN p2.column1 ELSE NULL END column1
FROM comments c
  LEFT JOIN photos p1
    ON c.object_id = p1.photo_p_id
  LEFT JOIN photos p2
    ON c.object_id = p2.photo_id

Още един вариант -

SELECT c.*, p.*
FROM comments c
  JOIN photos p
    ON c.comment_type = 8 AND c.object_id = p.photo_p_id OR c.comment_type = 17 AND c.object_id = p.photo_id



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо _ (долно черта) съвпада с - (тире)?

  2. Проблем с блокиране на MySQL InnoDB с две еднакви заявки (различни параметри)

  3. Актуализирайте колоната въз основа на съвпадащи стойности в друга таблица в mysql

  4. Spark SQL/Hive заявката отнема завинаги с Join

  5. Не може да се свърже с MySQL база данни на Node.js