Sql 当一个表从未使用时,从多个表中选择

Sql 当一个表从未使用时,从多个表中选择,sql,multiple-tables,Sql,Multiple Tables,为了更好地理解,我用示例表改进了我的问题 我有3个表,其中包含以下行: TABLE1 t1 TABLE t2 TABLE t3 ID NAME OBS ID HW_VER ID SERIAL ----------------- ----------- ------------ 1 | Name1 | Obs1 1 | HWVe

为了更好地理解,我用示例表改进了我的问题

我有3个表,其中包含以下行:

TABLE1 t1                 TABLE t2              TABLE t3

ID   NAME    OBS          ID   HW_VER           ID   SERIAL
-----------------         -----------           ------------
1  | Name1 | Obs1         1  | HWVer1           5  | Serial5
2  | Name2 | Obs2         2  | HWVer2           6  | Serial6
3  | Name3 | Obs3         3  | HWVer3           7  | Serial7
4  | Name4 | Obs4
5  | Name5 | Obs5
6  | Name6 | Obs6
7  | Name7 | Obs7
现在,我想在满足两个条件时选择id、名称和obs:

t2或t3中存在id,但两者均不存在; 它指的是t2或t3属性,例如t2.HW_VER='HWVER1',决不同时指这两个属性 我做了类似的事情,但这是错误的:

SELECT DISTINCT t1.id, t1.name, t1.obs
FROM table1 t1, table2 t2, table3 t3
WHERE t1.id IN (t2.id, t3.id) AND t3.serial='Serial6';
我不能为此使用联合、外部表或视图。 如果有进一步的问题,请告诉我


非常感谢您的回答,我非常感谢您的时间。

您需要从T2或T3中选择,但决不能同时选择两者?我想你想要这样的东西

select count(*)
from t1
where exists (
    select 'x'
    from t2 
    where MyPrimaryKey_Name = 'random_name'
    and t2.id = t1.id
)
or exists (
    select 'x'
    from t3 
    where MyPrimaryKey_Name = 'random_name'
    and t3.id = t1.id
)

问题是,你想计算什么?请发布带有期望输出的样本数据-你的问题有点不清楚。如果不理解你的模式,你的问题很难可视化。但是where子句实际上是一个OR。尝试将其设置为AND:where t1.id=t2.id和t1.id=t3.id.where子句中的case构造上的google搜索将帮助您开始。详细信息可能取决于您使用的db软件。你没有具体说明。