Mysql 如何限制或改进表之间的比较?
虽然SQL查询似乎在大部分情况下都能正常工作,但我试图使用EXISTS条件将比较集限制为仅包含导入中的一个field1值的记录,但似乎没有应用,因此我影响了查询中应忽略的记录。有人能给我一些指导,让这些问题变得更好吗 给定:MySQL数据库中的两个表:t.import和t.main 第一个目标:插入t.import中存在且t.main中缺少的记录: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
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。谢谢,我编辑了我的原始代码,它似乎工作得更好,但它仍然非常缓慢。有什么建议吗?是否以最佳/最快的方式进行比较?是否可以查看有关联接的信息?