gpt4 book ai didi

SQLite 条件 where 子句

转载 作者:行者123 更新时间:2023-12-03 19:36:31 25 4
gpt4 key购买 nike

我有三张 table

ZoneTable
ID, Name

UserTable
ID, Name

UserZone
ZoneTableID, UserTableID

现在。
SELECT ID, Name from ZoneTable

给我完整的区域列表。

如果我执行以下操作
SELECT ZoneTable.ID, ZoneTable.Name from ZoneTable LEFT JOIN UserZone on UserZone.ZoneTableID = ZoneTable.ID WHERE UserTableID = :ID GROUP BY ZoneTable.ID

给我允许用户进入的区域列表。

现在让事情变得烦人,如果用户被允许进入所有区域,那么他们根本不会出现在 UserZone 中。

那么无论如何我可以获得每个特定用户用户的 ZoneTableID 列表,如果计数为 0,则不应用 where 子句,如果 count > 0 则仅显示特定区域名称,全部在一个查询中。

如果这有意义

谢谢

最佳答案

注意:您不需要使用外连接,查询可以重写为:

SELECT ID, Name
FROM ZoneTable
WHERE ID IN (SELECT ZoneTableID
FROM UserZone
WHERE UserTableID = :ID);

无论如何,您可以将条件添加到 WHERE 子句:
SELECT ID, Name
FROM ZoneTable
WHERE ID IN (SELECT ZoneTableID
FROM UserZone
WHERE UserTableID = :ID)
OR NOT EXISTS (SELECT ZoneTableID
FROM UserZone
WHERE UserTableID = :ID);

或为第二种情况添加第二个查询:
SELECT ID, Name
FROM ZoneTable
WHERE ID IN (SELECT ZoneTableID
FROM UserZone
WHERE UserTableID = :ID)
UNION ALL
SELECT ID, Name
FROM ZoneTable
WHERE NOT EXISTS (SELECT ZoneTableID
FROM UserZone
WHERE UserTableID = :ID);

关于SQLite 条件 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34699315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com