如何获取在另一列中没有匹配项的列的字段?
我试过:
SELECT table1.page_title
FROM table1, table2
WHERE table1.page_title != table2.page_title
它会产生很多重复的字段,所以我做了一个:
SELECT DISTINCT table1.page_title
FROM table1, table2
WHERE table1.page_title != table2.page_title
但它只是挂起。
非常感谢任何帮助,谢谢!
附言 我这样做是为了为 mediawiki 的 MWDumper 工具创建一个排除列表。我需要它,以便当我导入输出的 sql 时,我当前的 wiki 条目不会被覆盖。
编辑: 是的,它们是两张不同的 table 。每个都有大约 70,000 多条记录 另外为什么我的查询很慢?如果有人可以澄清,我将不胜感激,这样我就可以了解原因 :) 再次感谢!
最佳答案
a 和 b 是不同的表吗,它们都有一个“page_title”列?
如果是这样,试试这个:
SELECT DISTINCT page_title FROM a
WHERE page_title NOT IN (SELECT page_title FROM b)
如果您只对删除重复项感兴趣(如果您只有一张表),那么有几种方法可以做到这一点,其中两种是:
SELECT DISTINCT page_title FROM a
或
SELECT page_title FROM a
GROUP BY page_title
GROUP BY 选项更强但更慢 - 您可以添加一个 HAVING 子句以仅选择那些出现的标题,例如超过两次:
SELECT page_title FROM a
GROUP BY page_title
HAVING COUNT(page_title) > 2
希望对你有帮助
(感谢 Aaron F 的评论)
关于sql - 快速获取 MySQL 中 2 列差异的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/905689/