SQLite从tbl2(或tlb1,如果不存在)中选择值
我有两个表SQLite从tbl2(或tlb1,如果不存在)中选择值,sqlite,Sqlite,我有两个表tbl1和tbl2,它们都有行id和price,其中tbl1包含许多记录,而tbl2只包含少数记录 我想从tbl1中选择所有条目,但如果tbl2中存在price数据,我想用tbl2中的数据替换price id price 2 99.99 到目前为止,我得到了一个不起作用的查询: SELECT p.id, CASE p.id WHEN p.id IN ( SELECT id FROM tbl2
tbl1
和tbl2
,它们都有行id
和price
,其中tbl1
包含许多记录,而tbl2
只包含少数记录
我想从tbl1
中选择所有条目,但如果tbl2
中存在price
数据,我想用tbl2
中的数据替换price
id price
2 99.99
到目前为止,我得到了一个不起作用的查询:
SELECT p.id,
CASE p.id WHEN p.id IN (
SELECT id
FROM tbl2
)
THEN o.price
ELSE p.price END AS 'price'
FROM tbl1 p
LEFT JOIN tbl2 o ON p.id = o.id
样本tbl1
id price
1 1.23
2 4.56
3 7.89
示例tbl2
id price
2 99.99
预期的查询结果
id price
1 1.23
2 99.99 <--- entry from tbl2
3 7.89
id价格
1 1.23
2 99.99只需使用COALESCE
选择正确的价格:
SELECT
p.id,
COALESCE(o.price, p.price) price
FROM tbl1 p
LEFT JOIN tbl2 o
ON p.id = o.id;
这里的逻辑是我们使用第二个表中的价格
,假设它存在于给定的id
。如果它不存在,那么我们返回到使用第一个表中的价格
。只需使用合并
选择正确的价格:
SELECT
p.id,
COALESCE(o.price, p.price) price
FROM tbl1 p
LEFT JOIN tbl2 o
ON p.id = o.id;
这里的逻辑是我们使用第二个表中的价格
,假设它存在于给定的id
。如果它不存在,那么我们回到使用第一个表中的价格。这太棒了!非常感谢你,这很有魅力。我会在至少10分钟后接受你的回答。这太棒了,提姆!非常感谢你,这很有魅力。我会在至少10分钟后接受你的回答