给定一个表中的行给定另一个表中的值-SQLite

时间:2016-11-18 09:53:57

标签: mysql sql sqlite

我正在一个包含船舶信息的数据库中工作。

表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

由于

3 个答案:

答案 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)

这肯定会奏效。但你也可以尝试做连接。它通常比子查询更快。