Sql 从内部联接中的2个表获取数据

Sql 从内部联接中的2个表获取数据,sql,join,inner-join,Sql,Join,Inner Join,我对内部联接并不陌生,但我不知道为什么要从两个表中获取数据 看,我有一些桌子 表一 select TransactionMId,ModelNumber,EmeiNo,Color from tblTransactionD TransactionMId型号EmeiNo颜色 c174f2c0-72f4-4746-b83d-21ffca6a5a61 620G 10001灰色 c174f2c0-72f4-4746-b83d-21ffca6a5a61一个10005黑色 4fa11531-886a-4d1

我对内部联接并不陌生,但我不知道为什么要从两个表中获取数据

看,我有一些桌子

表一

select TransactionMId,ModelNumber,EmeiNo,Color from tblTransactionD 
TransactionMId型号EmeiNo颜色

c174f2c0-72f4-4746-b83d-21ffca6a5a61 620G 10001灰色

c174f2c0-72f4-4746-b83d-21ffca6a5a61一个10005黑色

4fa11531-886a-4d15-af5c-7355cc3648f5 620G 10001灰色

表二

select TransactionMId,ModelNumber,EmeiNo,Color from tblTransactionP
TransactionMId型号EmeiNo颜色

c174f2c0-72f4-4746-b83d-21ffca6a5a61 620G 10001灰色

c174f2c0-72f4-4746-b83d-21ffca6a5a61一个10005黑色

表三

select TransactionMId,ModelNumber,EmeiNo,Color from tblTransactionS
TransactionMId型号EmeiNo颜色

4fa11531-886a-4d15-af5c-7355cc3648f5 620G 10001灰色

现在我想显示表1和表2中的数据,但不是表3中的数据

select TransactionMId,ModelNumber,EmeiNo,Color from tblTransactionS
这是我内心的连接

SELECT TD.BrandId,TD.Color,TD.EmeiNo FROM dbo.tblTransactionD AS TD
INNER JOIN dbo.tblTransactionP AS TP
ON
TP.transactionMId=TD.transactionMId
INNER JOIN dbo.tblTransactionS AS TS
ON
TP.EmeiNo != TS.EmeiNo
但执行的结果显示的数据如下

BrandId Color   EmeiNo
1   grey    10001
1   black   10005
查询中不应显示10001的记录,因为它位于表3中

select TransactionMId,ModelNumber,EmeiNo,Color from tblTransactionS

我的内心连接有什么问题

如果我正确理解了你的问题,你可以这样尝试

SELECT TD.BrandId,TD.Color,TD.EmeiNo FROM dbo.tblTransactionD AS TD
INNER JOIN dbo.tblTransactionP AS TP
ON TP.transactionMId=TD.transactionMId
where TP.EmeiNo not in (select distinct EmeiNo from dbo.tblTransactionS);

由于您的描述tblTransactionS(三个表),因此不需要加入

以下查询将起作用:

SELECT TD.BrandId,TD.Color,TD.EmeiNo FROM dbo.tblTransactionD AS TD
INNER JOIN dbo.tblTransactionP AS TP
ON
TP.transactionMId=TD.transactionMId
where TP.EmeiNo not in (select distinct EmeiNo from dbo.tblTransactionS);

10005与10001不同,因此在检查与10005相关的记录时,条件(TP.EmeiNo!=TS.EmeiNo)有效。。。根据数据和查询,结果是正确的:-p您使用的是哪个数据库?输出不显示10001,如表3所示。所以,是的,不需要加入第三个表,但需要条件来消除第三个表中的
EmeiNo
。因此,上述查询将不起作用。