我构建了一个大型脚本,其中有多个内部联接作为“条件”(而不是使用 WHERE 子句)。作为示例:
SELECT T1.*
FROM Table1 T1
INNER JOIN Table2 T2
ON T1.id = T2.id
INNER JOIN Table3 T3
ON T2.id = T3.id
INNER JOIN Table4 T4
ON T1.id = T4.id
等等...
在某些情况下,我需要跳过一个或多个内部联接。 到目前为止,我必须复制脚本,注释掉带有我不需要的连接的行。 有没有办法使用变量或 IF 子句来跳过连接,或者至少是“全选”方式?
最佳答案
假设 PHP:
$SQL = "
SELECT T1.*
FROM Table1 T1
INNER JOIN Table2 T2
ON T1.id = T2.id" . ($variable1 == x ? " OR TRUE=TRUE" : "") . "
INNER JOIN Table3 T3
ON T2.id = T3.id" . ($variable2 == y ? " OR TRUE=TRUE" : "") . "
INNER JOIN Table4 T4
ON T1.id = T4.id" . ($variable3 == z ? " OR TRUE=TRUE" : "")
但我确信您应该动态构建查询:
$SQL = "
SELECT T1.*
FROM Table1 T1";
if ($variable1 == x) {
$SQL .= " INNER JOIN Table2 T2 ON T1.id = T2.id";
}
if ($variable2 == y) {
$SQL .= " INNER JOIN Table3 T3 ON T2.id = T3.id";
}
if ($variable3 == z) {
$SQL .= " INNER JOIN Table4 T4 ON T3.id = T4.id";
}
等等。与您所有的加入。
关于mysql - 跳过多个表mysql查询中的内连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14920194/