我正在查找一个SQL查询来选择未被同一个表上的另一个查询选中的所有记录。 具体而言,我想选择所有具有特定字段('fieldA')重复的记录,然后删除除这些记录之外的所有记录。SQL:选择未被另一个查询选中的所有记录
所以select语句可能类似于以下(不工作!):
select * from table where id not in(select * from table group by fieldA)
如果一个查询是不可能的,那么这将是最有效的解决方案?
我正在查找一个SQL查询来选择未被同一个表上的另一个查询选中的所有记录。 具体而言,我想选择所有具有特定字段('fieldA')重复的记录,然后删除除这些记录之外的所有记录。SQL:选择未被另一个查询选中的所有记录
所以select语句可能类似于以下(不工作!):
select * from table where id not in(select * from table group by fieldA)
如果一个查询是不可能的,那么这将是最有效的解决方案?
如果您改变不是子SELECT语句只返回一列(ID),它应该工作 -
http://blog.sqlauthority.com/2008/04/22/sql-server-better-performance-left-join-or-not-in/
喜欢的东西:
SELECT id FROM table WHERE id IN (
SELECT MIN(id) FROM table GROUP BY fieldA HAVING COUNT(*) > 1
)
更改*为'id'在内的SELECT语句......不说不行? – 2011-06-01 18:03:33
我已经尝试过,但phpMyAdmin崩溃。 – grai 2011-06-01 18:31:14
哪一行的标准是什么? – 2011-06-01 18:47:55