我想用if条件为我的查询添加一些连接语句。我试着使用CASE功能。但它只返回一个表达式。我想要查询的是;
SELECT * FROM table1 JOIN table2 ON (table1.id = table2.id)
IF(table1.col1 like '%a%')
{
JOIN table3 ON .....
LEFT JOIN table4 ON ....
.....
}
ELSE
{
JOIN table5 ON ....
LEFT JOIN table6 ....
}
WHERE
......
有没有办法创建这样的查询?
答案 0 :(得分:3)
答案是:是的,您可以但不能使用if ...您需要将IF条件添加到连接的ON子句中,这样当条件为真时,此列将具有值当条件不成立时,它们将为空。
SELECT * FROM table1
JOIN table2 ON (table1.id = table2.id)
JOIN table3 ON(table1.id = table3.id AND table1.col like '%a%')
LEFT JOIN table4 ON(table1.id = table4.id AND table1.col like '%a%')
JOIN table5 ON(table1.id = table5.id AND table1.col not like '%a%')
LEFT JOIN table6 ON(table1.id = table6.id AND table1.col not like '%a%')
你不能划分你的桌子,把几行连接到一张桌子,把另一排连接到另一张桌子。所以这是我能想到的最佳方式。