我决定写这个主题,因为我正在努力解决一个问题而且我没有得到任何进一步的信息。 我有两张桌子: - 客户表 - 装运表 在客户表(表A)中有许多客户端,如下所示
|---------------------|------------------|
| ClientID | CliendCode |
|---------------------|------------------|
| 1 | ABC |
| 2 | DEF |
| 3 | GHI |
..并且在装运表(表B)中存储了所有装运记录和客户对应的ID。
|---------------------|------------------|
| ShipmentID | CliendID |
|---------------------|------------------|
| 100 | ABC |
| 101 | ABC |
| 102 | GHI |
| 301 | DEF |
| 302 | GHI |
| 303 | GHI |
我想要实现的是从表A和表B中提取数据并获取ShipemtnID不从“10”开始的那些客户和货物的详细信息(如果至少有一个shipmentid,则基本上排除所有客户端从'10'开始记录装运表 在这种情况下,我看的结果将是。
| ShipmentID | CliendID |
|---------------------|------------------|
| 301 | DEF |
我尝试过应用外部,存在和其他语句,但它们都没有提供准确的数据。 我将非常感谢您提供的任何帮助,因为我需要尽快完成此报告。
答案 0 :(得分:1)
您似乎想要not exists
或not in
:
select s.*
from shipments s
where s.clientid not in (select s2.clientid
from shipments s2
where s2.shipmentid like '10%'
);
答案 1 :(得分:0)
尝试使用以下查询..
select sh.ShipmentId,sh.ClientId
from shipments sh
where not exists(select 1
from shipments sh1
where sh.clientId = sh1.clientId
and sh1.shipmentid like '10%'
);