【问题标题】:sqlite3, how properly use subqueriessqlite3,如何正确使用子查询
【发布时间】:2019-04-04 19:12:15
【问题描述】:

我是sql查询的初学者,请解释一下我该如何解决这个问题。

问题,假设我有 2 个表:

Table A: has a_id_1, a_id_2
Table_B: has b_id_1, b_id_2

这些表有这样的记录:

Table A: has (1,2)
Table A: has (4,5)
Table A: has (7,10)

Table B: has (1,2)
Table B: has (2,1)
Table B: has (7,1)
Table B: has (4,10)
Table B: has (1,10)
Table B: has (10,1)

所以,我的问题是,如何编写查询以根据表 A 从表 B 中删除记录,如果表 B 记录:b_id_1 != b_id_2 和 b_id_2 != b_id_1 删除此类记录。

我想我必须使用子查询,但我不确定在这种特定情况下如何正确使用它。

我正在使用 sqlite3。

非常感谢您的帮助。

【问题讨论】:

  • 我无法确定您是否真的有两个表,或者您是否正在尝试删除 b 中的“反转”重复项。
  • 这里是不同的例子:表格:高中生(ID int,name text,grade int);朋友(ID1 整数,ID2 整数);喜欢(ID1 int,ID2 int);资料:朋友:(1689、1709);朋友:(1501、1934);朋友:(1316、1934);喜欢:(1689、1709);喜欢:(1709、1689);喜欢:(1782、1709);如果两个学生 A 和 B 是朋友,并且 A 喜欢 B 但反之不喜欢,则删除 Likes 元组。谢谢。

标签: sql sqlite subquery delete-record


【解决方案1】:

你可以使用not exists,像这样:

delete from b
where not exists (select 1 from a where b.b_id_1 = a.b_id_2 and b.b_id_2 = a.b_id_1);

您的列名和示例有点混乱,但这是基本思想。

【讨论】:

  • 感谢您的回答,如果我的问题听起来令人困惑,我很抱歉英语是我的第二语言。我一定会尝试实施您的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多