我正在尝试编写一个只在满足某个条件时才执行JOIN的SQLite查询(items.super = 1).我知道我可以在我的应用程序中编写一些代码,以确定是否超级== 1然后执行正确的查询,但我更倾向于只有一个查询在两种情况下都有效 - 无论super是0还是1.
SELECT i2.id, i2.name
FROM items i
JOIN items i2 ON i.subcategory_id = i2.subcategory_id AND i.super = 1
WHERE i.id = ?
Run Code Online (Sandbox Code Playgroud)
上面,我试图在我的JOIN子句中添加第二个条件,但是当i.super == 0时这不起作用.我应该用两个左连接和coalesce()函数这样的东西解决这个问题吗?
谢谢.
这就是我读这个问题的方法.
您想要显示项目中的记录,WHERE过滤器应用于项目.
但是,有时当前项目的超级= 1,您希望显示所有兄弟项目而不是相同的子类别.
在这种情况下,您可以使用此查询
SELECT i2.id, i2.name
FROM items i
INNER JOIN items i2 ON
(i.super = 0 and i2.id = i.id)
OR
(i.super = 1 and i.subcategory_id = i2.subcategory_id)
WHERE i.id = ?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14759 次 |
| 最近记录: |