【发布时间】:2018-05-23 03:02:27
【问题描述】:
我有一个 ID 重复的数据库,我想更改这个重复 ID 的名称。
所以,我有一个车辆数据库,在列中我有许可证号 (id)、车辆类型、颜色和品牌。
所有的 id 在数据库中都是重复的,我想选择除每个不同 ID 的第一行之外的所有 ID(类似于“DISTINCT id”但相反......)。
编辑 2:
我已经创建了这个表
DROP TABLE IF EXISTS Proces1 CASCADE;
CREATE TABLE Proces1 AS
(
SELECT id_importat AS id_aux, driver_city AS city_aux, driver_state AS state_aux, gender AS g_aux, race AS r_aux
FROM ImportaViolations
WHERE id_importat IN (
SELECT id_importat
FROM ImportaViolations
GROUP BY id_importat
HAVING (COUNT(*) > 1))
GROUP BY id_importat, driver_city, driver_state, gender, race
);
在这张表中,我重复了 id,但列中的信息不同。
类似:
id_aux city_aux state_aux g_aux r_aux
1 London England M WHITE
1 London England F BLACK
2 Madrid Spain M BLACK
2 London England F WHITE
2 London England M WHITE
...
所以现在,我想选择所有具有重复 id_aux 的行,除了每个不同 id_aux 的第一个。所以我想得到这个最终结果(在这个例子中):
id_aux city_aux state_aux g_aux r_aux
1 London England F BLACK
2 London England F WHITE
2 London England M WHITE
...
【问题讨论】:
-
我删除了不兼容的数据库标签。请仅使用您真正使用的数据库进行标记。
-
您可能需要添加更具体的示例数据。例如,您可以只说
WHERE Column1 <> 'a'并获得您想要的结果。我想你的实际数据更复杂。同样假设它更复杂,您将需要一种方法来知道哪一行是“第一”行。 -
我真的不明白这个问题。 select * from table where column1 in ('c','e')?
-
SQL 数据存储在无序集中,这意味着仅仅因为一行出现在您的结果集中,您需要一个
ORDER BY来保证它是“第一”行。 -
您可以使用限制和偏移量.. 示例.. $sql = "SELECT * FROM tables LIMIT 10 OFFSET 15";上面的 SQL 查询说“只返回 10 条记录,从第 16 条记录开始(偏移量 15)”:您也可以使用 DISTINCT 去除重复的 ID
标签: sql postgresql select