如何使用两列作为连接参数连接两个表?

时间:2014-06-30 18:41:06

标签: mysql

我有两个表,一个用于内容,一个用于图像。

我的问题是:图像不是必填字段,但如果图像存在,则列i.type必须是指定的数字。

我使用的查询也会返回其他一些具有相同ID的表格中的内容(我知道它错了,但我现在只有它)。

这是查询

SELECT e.*, i.imagem, i.folder
FROM event e
LEFT JOIN img_rel i ON e.id = i.rel
WHERE e.slug = 'slug'
AND e.type = 'even';

有没有办法做到这一点,还是我必须使用PHP过滤它?

3 个答案:

答案 0 :(得分:2)

join ... on ... and (i.imagem IS NULL or i.type = 'myspecialvalue')

是你需要的吗?

答案 1 :(得分:1)

您可以在查询中使用CASE

SELECT 
  e.*,
  CASE
    WHEN i.imagem IS NOT NULL 
    AND i.type = 'your number' 
    THEN i.imagem 
    ELSE NULL 
  END AS imagem,
  i.folder 
FROM
  event e 
  LEFT JOIN img_rel i 
    ON e.id = i.rel 
WHERE e.slug = 'slug' 
  AND e.type = 'even';

答案 2 :(得分:0)

您可以根据需要为Join的On子句使用任意数量的列。您甚至可以在Join上添加静态过滤器。

Select * 
From   Table1 t1 Left Join
       Table2 t2 On t1.col1 = t2.col2 
                And t1.col2 = t2.col2
                And t1.col3 = 'something static'
Where  t1.col1 = 'this will match both col1 and t2.col1'