sql - 快速获取 MySQL 中 2 列差异的方法

标签 sql mysql mediawiki

如何获取在另一列中没有匹配项的列的字段?

我试过:

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/

相关文章:

mysql - SQL如何统计相同专业的人数

php - mysql、php插入零问题

jquery - 如何在不刷新页面的情况下自动将新插入的mysql数据显示到laravel View 中?

php - 类别中的下一篇、上一篇文章是否有任何扩展?

mysql - MediaWiki MySQL 数据库字符集,使用哪一个?

c# - SQL Server 特定类型支持 OrmLite

三层架构中的 ASP.Net session 存储提供程序

email - 从 mediawiki 中的电子邮件生成文章

php - 无法正确使用查询

java - java中如何继承主类