使用where子句从table1中选择不在table2中的特定数据

骨质疏松症

我想从表1中选择不在表2中的数据,但我必须从表1中选择特定的数据

我的数据表

CREATE TABLE IF NOT EXISTS `table3` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `acc_id` int(11) NOT NULL DEFAULT '0',
  `did` int(11) NOT NULL,

  PRIMARY KEY (`id`)
) 



CREATE TABLE IF NOT EXISTS `table2` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `acc_id` int(11) NOT NULL,
  `table1_id` int(11) NOT NULL,
  `did` int(11) NOT NULL,

  PRIMARY KEY (`id`)
) 


CREATE TABLE IF NOT EXISTS `table1` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `acc_id` int(11) NOT NULL DEFAULT '0',

  `name` varchar(50) DEFAULT NULL,
 PRIMARY KEY (`id`)

)

我想要做

从table1中选择名称,id,其中id!=(从table2中选择table1_id将table2上的table3加入到table2.acc_id = table3.acc_id中,其中table2.did = 4759505和table2.acc_id = 2)和table1.acc_id = 2

如果子查询返回1行,则上面的查询可以正常工作,但是如果子查询返回多行,则上述查询无法正常工作

谢谢

戈登·利诺夫(Gordon Linoff)

您可以将更!=改为not in

select name, id
from table1
where id not in (select table1_id
                 from table2 join
                      table3
                      on table2.acc_id = table3.acc_id
                      where table2.did = 4759505 and table2.acc_id = 2
                ) and
      table1.acc_id = 2;

注意:您还应该确保table1_id在子查询中从不NULLNOT IN在这种情况下可能是非直觉的。通常,我更喜欢NOT EXISTS

select name, id
from table1
where not exists (select table1_id
                  from table2 join
                       table3
                       on table2.acc_id = table3.acc_id
                       where table2.did = 4759505 and table2.acc_id = 2 and
                             table1_id = table1.id
                 ) and
      table1.acc_id = 2;

这样可以NULL更直观地处理该值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Select ONE random row from Table1 where id does not exist in Table2

来自分类Dev

MYSQL:重复table1内容乘以table2中的内容

来自分类Dev

如何从table2中提取最接近table1的DATE FIELD的数据?

来自分类Dev

检查Table1中的字段组合是否在另一个Table2(SQL)中存在

来自分类Dev

使用where子句从table1中选择不在table2中的特定数据

来自分类Dev

将table2中的所有行插入到table1中

来自分类Dev

使用staging_table1和table2中的数据插入table1,同时使用staging_table1从table2中获取数据

来自分类Dev

MySQL table1和table2如果不存在于表1中显示

来自分类Dev

如何通过MYSQL上的数据透视表从table1中选择随机行

来自分类Dev

SQL Server:基于table1中的值在特定table2列中返回值

来自分类Dev

DAX:对table1中的行进行计数,其中1列中的数据等于table2中的数据,并将总和返回给table2

来自分类Dev

使用staging_table1和table2中的数据插入table1,同时使用staging_table1从table2中获取数据

来自分类Dev

仅当table1中存在类似记录时才插入到table2中

来自分类Dev

显示来自table1的数据,其中其id(Table1 Id)未包含在table2中

来自分类Dev

仅显示table1中与table2不同的字段(SQL Server 2008)

来自分类Dev

如何将table2的1 col中的所有数据连接到table1,同时将不匹配的数据保留在table1中

来自分类Dev

在sas中提取到table1中后,从table2中删除一条记录

来自分类Dev

在mysql中选择子查询,其中table2是table1的一列

来自分类Dev

从table1以及mysql中的table2中选择所有结果,其中两个表都有一个公共ID

来自分类Dev

如何通过MYSQL上的数据透视表从table1中选择随机行

来自分类Dev

如何使用与table1不相关的子句正确计算table2中与table1中的项目相关的行

来自分类Dev

mysql union select where table1 field3 = table2 field5

来自分类Dev

如果 table1 中的 table2 id 不为空,如何加入 table2

来自分类Dev

选择 table1 和 table2 的计数

来自分类Dev

如何从 table1 中获取不在 table2 中的数据?代码点火器

来自分类Dev

如何使用sql查询删除table1中的某些行及其更改应反映在C#中的table2中?

来自分类Dev

如何使用 TABLE2 中的值更新 TABLE1 而不将 TABLE1 中的列设置为特定的单个选择语句?

来自分类Dev

如果整行不存在于 table2 中,则插入 table2 从 table1 中选择

来自分类Dev

存储过程,用于选择 table1、Group By、Sum 中的值,然后将这些值插入 table2

Related 相关文章

  1. 1

    Select ONE random row from Table1 where id does not exist in Table2

  2. 2

    MYSQL:重复table1内容乘以table2中的内容

  3. 3

    如何从table2中提取最接近table1的DATE FIELD的数据?

  4. 4

    检查Table1中的字段组合是否在另一个Table2(SQL)中存在

  5. 5

    使用where子句从table1中选择不在table2中的特定数据

  6. 6

    将table2中的所有行插入到table1中

  7. 7

    使用staging_table1和table2中的数据插入table1,同时使用staging_table1从table2中获取数据

  8. 8

    MySQL table1和table2如果不存在于表1中显示

  9. 9

    如何通过MYSQL上的数据透视表从table1中选择随机行

  10. 10

    SQL Server:基于table1中的值在特定table2列中返回值

  11. 11

    DAX:对table1中的行进行计数,其中1列中的数据等于table2中的数据,并将总和返回给table2

  12. 12

    使用staging_table1和table2中的数据插入table1,同时使用staging_table1从table2中获取数据

  13. 13

    仅当table1中存在类似记录时才插入到table2中

  14. 14

    显示来自table1的数据,其中其id(Table1 Id)未包含在table2中

  15. 15

    仅显示table1中与table2不同的字段(SQL Server 2008)

  16. 16

    如何将table2的1 col中的所有数据连接到table1,同时将不匹配的数据保留在table1中

  17. 17

    在sas中提取到table1中后,从table2中删除一条记录

  18. 18

    在mysql中选择子查询,其中table2是table1的一列

  19. 19

    从table1以及mysql中的table2中选择所有结果,其中两个表都有一个公共ID

  20. 20

    如何通过MYSQL上的数据透视表从table1中选择随机行

  21. 21

    如何使用与table1不相关的子句正确计算table2中与table1中的项目相关的行

  22. 22

    mysql union select where table1 field3 = table2 field5

  23. 23

    如果 table1 中的 table2 id 不为空,如何加入 table2

  24. 24

    选择 table1 和 table2 的计数

  25. 25

    如何从 table1 中获取不在 table2 中的数据?代码点火器

  26. 26

    如何使用sql查询删除table1中的某些行及其更改应反映在C#中的table2中?

  27. 27

    如何使用 TABLE2 中的值更新 TABLE1 而不将 TABLE1 中的列设置为特定的单个选择语句?

  28. 28

    如果整行不存在于 table2 中,则插入 table2 从 table1 中选择

  29. 29

    存储过程,用于选择 table1、Group By、Sum 中的值,然后将这些值插入 table2

热门标签

归档