如果记录存在则添加 WHERE 子句
Posted
技术标签:
【中文标题】如果记录存在则添加 WHERE 子句【英文标题】:Adding WHERE clause if record exists 【发布时间】:2012-10-21 20:26:14 【问题描述】:我正在处理一个要加入三个表的查询,但是第三个表可能有也可能没有相关记录。
我目前有:
SELECT table1.val, table2.val, table.3.val
FROM
table1
LEFT JOIN table2
ON table1.val = table2.val
LEFT JOIN table3
ON table.3.val = table2.val
WHERE
table1.name = "name"
AND table3.name = 'certain name'
ORDER BY table1.val ASC
我该如何编写这样的代码,如果table3
中不存在'certain name'
,那么WHERE
和SELECT
子句中会省略该部分?我实际上选择了更多字段,但这应该足以说明问题。
【问题讨论】:
【参考方案1】:如果您的意思是结果表单 table3
应该只可见,如果 table3.val
等于 table2.val
并且 table3.name
应该等于 'certain name'
,那么这将适合您:
SELECT table1.val, table2.val, table.3.val
FROM table1
LEFT JOIN table2
ON table1.val = table2.val
LEFT JOIN table3
ON table.3.val = table2.val AND table3.name = 'certain name'
WHERE table1.name = "name"
ORDER BY table1.val ASC
毕竟,这就是LEFT JOIN
的用途……
【讨论】:
哈!就是这么简单,嗯?不知道为什么我没有想到从哪里搬到那里。这解决了我的问题,谢谢pp!以上是关于如果记录存在则添加 WHERE 子句的主要内容,如果未能解决你的问题,请参考以下文章