Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何限制或改进表之间的比较?_Mysql - Fatal编程技术网

Mysql 如何限制或改进表之间的比较?

Mysql 如何限制或改进表之间的比较?,mysql,Mysql,虽然SQL查询似乎在大部分情况下都能正常工作,但我试图使用EXISTS条件将比较集限制为仅包含导入中的一个field1值的记录,但似乎没有应用,因此我影响了查询中应忽略的记录。有人能给我一些指导,让这些问题变得更好吗 给定:MySQL数据库中的两个表:t.import和t.main 第一个目标:插入t.import中存在且t.main中缺少的记录: INSERT INTO t.main (field1,field2,field3) SELECT field1,field2,field3 FROM

虽然SQL查询似乎在大部分情况下都能正常工作,但我试图使用EXISTS条件将比较集限制为仅包含导入中的一个field1值的记录,但似乎没有应用,因此我影响了查询中应忽略的记录。有人能给我一些指导,让这些问题变得更好吗

给定:MySQL数据库中的两个表:t.import和t.main

第一个目标:插入t.import中存在且t.main中缺少的记录:

INSERT INTO t.main (field1,field2,field3)
SELECT field1,field2,field3
FROM t.import
WHERE 
    ((field1,field2,field3) NOT IN (SELECT field1,field2,field3 FROM t.main))
AND
    (field1 IN (SELECT DISTINCT field1 FROM t.import AS field1 ORDER BY field1));
第二个目标:如果t.import中没有匹配的记录,但仅当t.main记录包含t.import中field1中的各种值之一时,才在t.main中标记记录

UPDATE t.main SET field3 = 'Dead'
WHERE (field1,field2,field3)
NOT IN (SELECT field1,field2,field3
  FROM t.import)
      AND
  (field1 IN (SELECT DISTINCT field1 FROM t.import AS field1 ORDER BY field1))      
      AND
  field1 != 0;

我认为,应该以与之前相同的方式重写t.import中的和EXISTS SELECT DISTINCT field1:以及t.import中SELECT DISTINCT field1中的字段1。谢谢,我编辑了我的原始代码,它似乎工作得更好,但仍然非常慢。有什么建议吗?正在进行比较,而不是以最佳/最快的方式进行比较?也许可以查看有关联接的信息?我认为和存在从t.import选择不同的字段1应该以与之前相同的方式重写:和从t.import选择不同的字段1中的字段1。谢谢,我编辑了我的原始代码,它似乎工作得更好,但它仍然非常缓慢。有什么建议吗?是否以最佳/最快的方式进行比较?是否可以查看有关联接的信息?