我正在一个包含船舶信息的数据库中工作。
表1经常记录有关时间,地点和速度的信息,包括船只的ID。每个容器都在数据库中记录多次。
表2的数据点较少,信息包含ID和船型。它看起来像这样:
表1:
Time - Speed - Location - ID
10 - 10 - X - 111
12 - 10 - X - 112
30 - 11 - X - 111
42 - 10 - X - 113
51 - 12 - X - 114
59 - 12 - X - 112
67 - 14 - X - 114
81 - 13 - X - 111
90 - 10 - X - 113
96 - 13 - X - 114
...
表2:
Time - ID - Ship_type
15 - 111- 1
27 - 113- 12
40 - 112 - 4
73 - 111 - 1
80 - 114 - 18
87 - 112 - 4
97 - 113 - 12
我想要的是删除表1中所有的行,其中Shiptype大于10,表2中的相应ID。比如1-10是货船,10-20是油轮,我想要从第一表的货船上获得所有数据。期望的输出:
Time - Speed - Location - ID
10 - 10 - X - 111
12 - 10 - X - 112
30 - 11 - X - 111
59 - 12 - X - 112
81 - 13 - X - 111
由于
答案 0 :(得分:0)
这有用吗
Select * from table1 where id in (Select id from table2 where shiptype between 10 and 20)
与删除语句
的子查询相同答案 1 :(得分:0)
根据您的问题,您需要使用ID在所有表格中链接所有表格。
使用可以使用左连接。
选择查询
SELECT * FROM Table1 as t1
LEFT JOIN Table2 as t2 ON t1.ID = t2.ID
LEFT JOIN Table3 as t3 ON t1.ID = t3.ID
WHERE 1 <= t2.Ship_type AND t2.Ship_type <=10;
删除查询
DELECT FROM Table1 as t1
LEFT JOIN Table2 as t2 ON t1.ID = t2.ID
LEFT JOIN Table3 as t3 ON t1.ID = t3.ID
WHERE t2.Ship_type > 10;
希望这适合你:)
答案 2 :(得分:0)
select * from table1 where id in (select id from table2 where Shop_type > 9)
这肯定会奏效。但你也可以尝试做连接。它通常比子查询更快。