我有一个带有多个连接的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
是否有可能以另一种方式做到这一点?
答案 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;
此外,您可能需要查看以下链接以获取更多相关信息。