sqlite 查询 - select 更喜欢某个值的数据
sqlite query - select data which prefers some value
我正在尝试创建 sqlite 查询,但遇到了一些问题。
假设 table 有三列 id、foreign-id 和 value。
我需要 select 具有不同 foreign_id 的所有行都具有给定值,但是对于所有不同的 foreign_id 可能不存在该值。
在这种情况下,值设置为某个后备值的行必须 selected(此类行始终存在)foreign_id。
抱歉我的英语不好,因为我的母语不是英语。
这是一个例子:
Table:
id | foreign_id | value
------------------------
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
4 | 2 | 1
5 | 2 | 3
如果所需值为 2 且回退值为 1,则查询应 return
id | foreign_id | value|
------------------------
2 | 1 | 2
4 | 2 | 1
这是 ID 为 1 的 return 行,因为它具有 foreign_id 1 所需的值 2。
它 return id 为 4 的行,因为对于 foreign_id 2,值为 2 的行不存在,所以它 select 是后备值为 1 的行。
希望这能稍微解决我的问题。
您也许可以使用 Union 来完成...例如:
SELECT DISTINCT (foreign_id), value
FROM TABLE
WHERE value = 2
UNION
SELECT DISTINCT (foreign_id), '1' as value
FROM TABLE
WHERE foreign_id NOT IN (
SELECT DISTINCT (foreign_id), value
FROM TABLE
WHERE value = 2
)
其中所有值为 2 的值设置为 2
,其他所有值设置为 1
(我还没有测试过这个查询,你可能需要做一些调整)
这是我根据赛斯的回答得出的解决方案。
SELECT DISTINCT (foreign_id), value, id FROM testTable
WHERE value = 2
UNION SELECT DISTINCT (foreign_id), value, id FROM testTable
WHERE value = 1
AND foreign_id NOT IN
(
SELECT foreign_id
FROM testTable
WHERE value = 2
)
我正在尝试创建 sqlite 查询,但遇到了一些问题。
假设 table 有三列 id、foreign-id 和 value。
我需要 select 具有不同 foreign_id 的所有行都具有给定值,但是对于所有不同的 foreign_id 可能不存在该值。 在这种情况下,值设置为某个后备值的行必须 selected(此类行始终存在)foreign_id。
抱歉我的英语不好,因为我的母语不是英语。
这是一个例子:
Table:
id | foreign_id | value
------------------------
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
4 | 2 | 1
5 | 2 | 3
如果所需值为 2 且回退值为 1,则查询应 return
id | foreign_id | value|
------------------------
2 | 1 | 2
4 | 2 | 1
这是 ID 为 1 的 return 行,因为它具有 foreign_id 1 所需的值 2。 它 return id 为 4 的行,因为对于 foreign_id 2,值为 2 的行不存在,所以它 select 是后备值为 1 的行。
希望这能稍微解决我的问题。
您也许可以使用 Union 来完成...例如:
SELECT DISTINCT (foreign_id), value
FROM TABLE
WHERE value = 2
UNION
SELECT DISTINCT (foreign_id), '1' as value
FROM TABLE
WHERE foreign_id NOT IN (
SELECT DISTINCT (foreign_id), value
FROM TABLE
WHERE value = 2
)
其中所有值为 2 的值设置为 2
,其他所有值设置为 1
(我还没有测试过这个查询,你可能需要做一些调整)
这是我根据赛斯的回答得出的解决方案。
SELECT DISTINCT (foreign_id), value, id FROM testTable
WHERE value = 2
UNION SELECT DISTINCT (foreign_id), value, id FROM testTable
WHERE value = 1
AND foreign_id NOT IN
(
SELECT foreign_id
FROM testTable
WHERE value = 2
)