【发布时间】:2023-03-08 00:34:01
【问题描述】:
Sqlite:
假设我有 3 个表,A、B 和 C,每个表都有一个唯一的列(colA、colB、colC(实际上,每个表都有几列,但我只想要一个列))和一个具有相同名称的外键列(我们称之为 Idx)。
现在,假设我想选择 A.colA、b.colB、c.colC WHERE idx=:idx
也就是说,我想将Idx作为参数传递给查询。
这是我的问题:查询是什么?
【问题讨论】:
Sqlite:
假设我有 3 个表,A、B 和 C,每个表都有一个唯一的列(colA、colB、colC(实际上,每个表都有几列,但我只想要一个列))和一个具有相同名称的外键列(我们称之为 Idx)。
现在,假设我想选择 A.colA、b.colB、c.colC WHERE idx=:idx
也就是说,我想将Idx作为参数传递给查询。
这是我的问题:查询是什么?
【问题讨论】:
有几种方法,但我认为最好的方法是显式加入查询,然后在where 子句中检查id:
SELECT A.colA, b.colB, c.colC
FROM A join
B
on A.idx = B.idx join
C
on A.idx = C.idx
WHERE A.idx = :idx;
这使用inner join,假设id 在所有三个表中。
请注意,如果任何表中有多行具有 idx 值,那么您将从查询中获得多行。
【讨论】: