我正在尝试执行类似于此的查询:
SELECT <columns> FROM table1
INNER JOIN table2 ON table1.id = table2.table1_id
INNER JOIN table3 ON table1.id = table3.table1_id
WHERE table3.column1 != 'foo' AND <other_conditions>
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
问题是 - 我希望查询返回结果,无论记录是否table3存在.也就是说 - 如果记录table3存在,我想检查该记录是否具有某个列值.如果记录table3 不存在,我希望查询假设条件为TRUE.
有什么指针吗?
您在表格上使用左连接.如果不存在相应的记录,则表中的值将为null,因此您可以使用coalesce来获取可与字符串进行比较的值:
SELECT <columns> FROM table1
INNER JOIN table2 ON table1.id = table2.table1_id
LEFT JOIN table3 ON table1.id = table3.table1_id
WHERE COALESCE(table3.column1, '') != 'foo' AND <other_conditions>
LIMIT 1
Run Code Online (Sandbox Code Playgroud)