MySQL加入任何不为空的列

时间:2018-03-21 02:49:33

标签: mysql

我有一堆包含大量列的表,但我们只需要查看其中的两列。我正在尝试在这个表上加入另一个表,但是我们对这两个列的所有了解都是一个是null而另一个不是:

client_id | note_id

如果client_id为空,主表想要clients.idnote_id notes.id加入clients.id(如果不为空)。

3 个答案:

答案 0 :(得分:1)

您可以在join on子句中使用coalesce。在这里看演示: http://sqlfiddle.com/#!9/99911/2。如果客户端id为null,则使用no​​te id连接table1和table2。

 Select t1.client_id, t1.note_id,t2.client_id, t2.note_id
 From table1 t1
 Join table2 t2 
 on coalesce(t1.client_id, t1.note_id) =coalesce(t2.client_id, t2.note_id)

答案 1 :(得分:1)

假设涉及3个表(主表包含client_idnote_id列,clients表和notes表),您可以使用查询等这样:

(select * 
 from mainTable inner join clients on mainTable.client_id = clients.id) 
union 
(select * 
 from mainTable inner join notes on mainTable.note_id = notes.id 
 where mainTable.client_id is NULL);

上面的查询包含2个查询,其中每个查询将输出连接列不为空的行。然后使用union将结果合并。

答案 2 :(得分:1)

这对你有用。这是我写的非常基本的查询。如果需要,可以进行更改。

SELECT * FROM YOUR_TABLE t 
LEFT OUTER JOIN clients c ON t.client_id = c.id 
LEFT OUTER JOIN notes n ON t.note_id = n.id 
WHERE c.id IS NOT NULL OR n.id IS NOT NULL