MySQL条件连接 - 这种语法合法吗?

时间:2015-11-10 10:53:39

标签: mysql mysqli

我有一个带有多个连接的mysql查询:

SELECT * FROM posts k
...
LEFT JOIN groups gr on k.group_id=gr.id
LEFT JOIN events ev on k.event_id=ev.id
...
etc.

我想减少连接数,因为不是在每个查询中都需要所有连接。 因此,如果 k.group.id ='0',则无需加入表, 如果 k.event.id ='0'

,则无需加入表事件

有没有办法如何使用连接条件创建查询?

以下连接工作正常,但我不确定这种语法是否合法:

LEFT JOIN groups gr on k.group_id > 0 and k.group_id=gr.id
LEFT JOIN events ev on k.event_id > 0 and k.event_id=ev.id

是否有可能以另一种方式做到这一点?

2 个答案:

答案 0 :(得分:1)

是语法

LEFT JOIN groups gr on k.group_id > 0 and k.group_id=gr.id
LEFT JOIN events ev on k.event_id > 0 and k.event_id=ev.id

完全合法。如果您想为JOINS添加条件,那么这就是继续进行的方法。您也可以通过以下方式使其更具可读性:

LEFT JOIN groups gr on k.group_id=gr.id and k.group_id > 0 
LEFT JOIN events ev on k.event_id=ev.id and k.event_id > 0

注意它不是强制性的,它只是可读性的问题,因为我发现它更易读,首先看到JOINing列然后条件

答案 1 :(得分:0)

是的,以下SQL语法对我来说很好。

SELECT * FROM table1
LEFT JOIN table2 ON condition1 AND condition2
LEFT JOIN table3 ON condition3 AND condition4;

此外,您可能需要查看以下链接以获取更多相关信息。

MySQL LEFT JOIN 3 tables

MySQL - select 3 tables with correct left join syntax

Left Joins to link three or more tables