【发布时间】:2022-11-23 06:59:50
【问题描述】:
我有下表:
用户 - 用户 ID、用户名、...
设置 - settingId, userId, settingKey, settingValue
例如对于 userId = 123,我可能有:
settingId: 1
userId: 123
settingKey: "allowClient"
settingValue: "0"
settingId: 2
userId: 123
settingKey: "allowAccess"
settingValue: "1"
那么例如,我如何查询所有用户的 settingValue 为“0”对应于“allowClient”的 settingKey 和 settingValue 为“1”对应于“allowAccess”的 settingKey?有时我正在寻找的 settingKey 和 settingValue 甚至可能不存在于特定用户,在这种情况下,我只想忽略这些用户。
我的“尝试”:
select * from User u inner join Settings s on u.userid = s.userid
where s.settingKey = 'allowClient and s.settingValue = '0'
and s.settingKey = 'allowAccess' and s.settingValue = '1'
由于明显的原因,这不起作用,因为它在所有条件上都加上了 AND。我不知道有任何 sql 结构可以解决这个问题,让我只说我真正想要的。
【问题讨论】:
-
我确信这是一个相当普遍的事情,其中连接的结果集将包含多个记录。我不是 sql 专家,这就是我问这个的原因。
-
我没有提供上面的示例数据吗?我不确定如何进一步简化它。
-
引用第一条评论:带有示例数据,期望的结果和你的尝试.
-
我的尝试?我在学校,需要展示我的作品吗?
标签: sql sql-server tsql