sql 删除双值
sql delete double value
我有一个双数据的数据库,现在我不想删除双数据。
我已经准备好使用此查询过滤双精度值:
SELECT model, count(model), max(product_id) as latest FROM sn1_product GROUP BY model HAVING COUNT(model) > 1
查询结果如下:
如何编写删除最新 ID 的删除查询?
像这样的东西怎么样:
DELETE FROM `sn1_product`
WHERE product_id IN (
SELECT max(product_id) as latest FROM sn1_product
GROUP BY model HAVING COUNT(model) > 1
)
但是,某些数据库(即:MySQL)在从您选择的同一个 table 中删除时遇到问题。如果您遇到此问题,请查看答案 of this question
更新:评论中的解决方法:
创建 table (reference)
CREATE TABLE sn2_product AS
SELECT * FROM sn1_product;
仅保存您需要的内容(注意最小函数 - info)。...
是其余字段。不要忘记复制非重复项
INSERT INTO sn2_product
SELECT min(product_id),... FROM sn1_product
GROUP BY model HAVING COUNT(model) > 1
INSERT INTO sn2_product
SELECT * FROM sn1_product
GROUP BY model HAVING COUNT(model) = 1
希望对您有所帮助
我真的不能说出这个查询的目的,所以很难给你一个方法来做你想做的事,但我会尽力帮助你。
据我所知,您无法从查询 table 中删除数据,只能删除创建 table 脚本中的数据。
以这种方式过滤它的问题是它仍然计算并查看双重数据,因此无论如何都要花费额外的时间才能删除,相反,您可以使用术语 distinct,它只会获取每个唯一值的第一个实例.
还有一个额外的想法,不应该在一个中创建双数据table,主键应该是双数据不应该是可能的。
ps:我不是专家,这只是我的想法,如果我错了,我很抱歉,只是试图提供我的一些知识。
我有一个双数据的数据库,现在我不想删除双数据。
我已经准备好使用此查询过滤双精度值:
SELECT model, count(model), max(product_id) as latest FROM sn1_product GROUP BY model HAVING COUNT(model) > 1
查询结果如下:
如何编写删除最新 ID 的删除查询?
像这样的东西怎么样:
DELETE FROM `sn1_product`
WHERE product_id IN (
SELECT max(product_id) as latest FROM sn1_product
GROUP BY model HAVING COUNT(model) > 1
)
但是,某些数据库(即:MySQL)在从您选择的同一个 table 中删除时遇到问题。如果您遇到此问题,请查看答案 of this question
更新:评论中的解决方法:
创建 table (reference)
CREATE TABLE sn2_product AS SELECT * FROM sn1_product;
仅保存您需要的内容(注意最小函数 - info)。
...
是其余字段。不要忘记复制非重复项INSERT INTO sn2_product SELECT min(product_id),... FROM sn1_product GROUP BY model HAVING COUNT(model) > 1 INSERT INTO sn2_product SELECT * FROM sn1_product GROUP BY model HAVING COUNT(model) = 1
希望对您有所帮助
我真的不能说出这个查询的目的,所以很难给你一个方法来做你想做的事,但我会尽力帮助你。
据我所知,您无法从查询 table 中删除数据,只能删除创建 table 脚本中的数据。
以这种方式过滤它的问题是它仍然计算并查看双重数据,因此无论如何都要花费额外的时间才能删除,相反,您可以使用术语 distinct,它只会获取每个唯一值的第一个实例.
还有一个额外的想法,不应该在一个中创建双数据table,主键应该是双数据不应该是可能的。
ps:我不是专家,这只是我的想法,如果我错了,我很抱歉,只是试图提供我的一些知识。