동일한 ID를 가진 다른 행에있는 열의 알 수없는 값으로 열 업데이트

사용자 3264659

데이터 입력 시점 gender에서 레코드의 "알 수 없음"이 "알 수 없음" 이므로 일부 행이 더티 (dirty) 인 PostgreSQL 테이블이 있습니다.이 테이블은 항상 object_id객체의 고유 식별자 인으로 표시된 것과 동일 합니다.

object_id                           gender
511E1AC7128EE2E74349896B55461F27    Unknown
511E1AC7128EE2E74349896B55461F27    Unknown
511E1AC7128EE2E74349896B55461F27    Male
56665EA256AB3757CDFA6C1CB4334C91    Female
56665EA256AB3757CDFA6C1CB4334C91    Female
56665EA256AB3757CDFA6C1CB4334C91    Unknown
56665EA256AB3757CDFA6C1CB4334C91    Unknown
55C3BFDBD327396E912604D6E635D59B    Unknown
55C3BFDBD327396E912604D6E635D59B    Unknown
55C3BFDBD327396E912604D6E635D59B    Female

따라서 내 테이블을 다음과 같이 업데이트하고 싶습니다.

object_id                           gender
511E1AC7128EE2E74349896B55461F27    Male
511E1AC7128EE2E74349896B55461F27    Male
511E1AC7128EE2E74349896B55461F27    Male
56665EA256AB3757CDFA6C1CB4334C91    Female
56665EA256AB3757CDFA6C1CB4334C91    Female
56665EA256AB3757CDFA6C1CB4334C91    Female
56665EA256AB3757CDFA6C1CB4334C91    Female
55C3BFDBD327396E912604D6E635D59B    Female
55C3BFDBD327396E912604D6E635D59B    Female
55C3BFDBD327396E912604D6E635D59B    Female

모든 "알 수없는"열이 object_id/ some other entry /에있는 알 수없는 값으로 변환됩니다 . PostgreSQL에서이 작업을 수행 할 수있는 방법이 있습니까-또는-더 나은-Sequelize (SQL 데이터베이스 용 Javascript ORM?)

Erwin Brandstetter

질문이 불완전하므로 현재 Postgres 버전 9.5와이 테이블 정의를 가정합니다.

CREATE TABLE object (
   object_id uuid PRIMARY KEY  -- ideally a UUID
 , gender    text              -- could probably be boolean
 -- rest irrelevant
   );

그런 다음 해결책은 다음과 같습니다.

UPDATE object o
SET    gender = sub.gender
FROM (
   SELECT object_id, min(gender) AS gender
   FROM   object
   GROUP  BY 1
   ) sub
WHERE  o.object_id = sub.object_id
AND    o.gender IS DISTINCT FROM sub.gender;

집계 또는 창 함수는 UPDATE직접 허용되지 않으므로 하위 쿼리가 필요합니다 .

집계 함수 min()text 'Unknown'이 'Female''Male' 다음에 정렬 되기 때문에 작동합니다 . 또한 대한 작업 것이다 boolean(여기서 '알 수없는'것 NULL), 그리고 min()하고 max()무시 NULL값을.

마지막 WHERE조건은 선택 사항이지만 빈 업데이트를 방지하기 위해 포함하는 것이 좋습니다. o.gender <> sub.gender열이 정의 된 경우 단순화 할 수 있습니다 NOT NULL.

데이터 유형을 사용하는 것이 이상적인 이유는 무엇 uuid입니까?

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

현재 행에있는 다른 열의 매개 변수를 기반으로 한 표현식에서 값이 다른 모든 행의 열 업데이트

분류에서Dev

동일한 값을 가진 다른 열이있는 mysql에서 행 선택

분류에서Dev

ID가 일치하지 않는 다른 테이블의 열에서 한 테이블의 열 값 업데이트

분류에서Dev

동일한 테이블의 다른 행에서 빼는 값으로 MySQL 날짜 시간 열 업데이트

분류에서Dev

loc 함수로 인덱스를 알고있는 값이 동일한 인덱스의 다른 열을 업데이트 할 수없는 문제는 무엇입니까?

분류에서Dev

SQL Server에서 동일한 테이블의 한 열에있는 값을 다른 열로 업데이트

분류에서Dev

SQL-동일한 DOB를 가진 서로 다른 테이블의 두 열에서 행을 찾는 명령

분류에서Dev

다른 값으로 구분 된 동일한 열 값이있는 행 집합에 고유 그룹 ID 할당

분류에서Dev

어떻게 갱신 팬더 열 셀 값에 대한 행 수준에있는 다른 열 이름을 가진 일부 요소의 유사성을 기반으로

분류에서Dev

SQL : 동일한 테이블에서 다른 값의 길이를 조건으로 열 값 업데이트

분류에서Dev

동일한 ID를 사용하지만 Python의 열에서 일부 다른 값을 가진 데이터 프레임의 레코드를 처리하는 방법

분류에서Dev

한 열의 값을 R의 다른 열에있는 동일한 값을 가진 행으로 복사하려면 어떻게해야합니까?

분류에서Dev

동일한 ID를 가진 행의 다른 열에서 값 선택

분류에서Dev

동일한 열의 다른 값으로 MySQL 행을 업데이트하는 방법은 무엇입니까?

분류에서Dev

다른 열의 값을 기반으로하지만 동일한 행에있는 열에 여러 셀 추가

분류에서Dev

동일한 ID를 가진 다른 테이블의 행에 다른 열의 특정 값이있는 경우를 제외하고 테이블에서 모든 행을 선택합니다.

분류에서Dev

Python의 동일한 DataFrame에있는 다른 열에 의존하는 열의 값 업데이트

분류에서Dev

다른 열의 동일한 행에있는 값과의 비교를 기반으로 셀 수 계산

분류에서Dev

동일한 데이터 프레임의 다른 열에있는 문자를 기반으로 데이터 프레임에 텍스트 열 추가

분류에서Dev

NA를 r의 각 그룹에 대해 동일한 열의 다른 행에있는 값으로 바꿉니다.

분류에서Dev

동일한 테이블에있는 다른 열의 정보가 포함 된 Oracle 트리거 업데이트 열

분류에서Dev

새 데이터를 일괄 적으로 추가하여 R의 다른 열에있는 고유 한 값을 기반으로 오름차순 값 열 만들기

분류에서Dev

행에 동일한 "A 열"값이있는 경우 빈 "B 열"셀을 마지막으로 알려진 값으로 채우기

분류에서Dev

동일한 ID를 가진 다른 테이블의 모든 값 업데이트

분류에서Dev

동일한 테이블에있는 여러 다른 열의 결합 된 결과로 열 업데이트

분류에서Dev

다른 열에없는 동일한 ID 목록 값을 가진 각 레코드의 경우

분류에서Dev

동일한 열 값을 가진 특정 수의 레코드를 다른 테이블에 삽입

분류에서Dev

트리거를 사용하여 매개 변수가있는 다른 테이블에서 열이 업데이트 될 때 한 테이블의 열 업데이트

분류에서Dev

Python, 동일한 ID를 가진 행 병합-날짜이지만 한 열에 다른 값

Related 관련 기사

  1. 1

    현재 행에있는 다른 열의 매개 변수를 기반으로 한 표현식에서 값이 다른 모든 행의 열 업데이트

  2. 2

    동일한 값을 가진 다른 열이있는 mysql에서 행 선택

  3. 3

    ID가 일치하지 않는 다른 테이블의 열에서 한 테이블의 열 값 업데이트

  4. 4

    동일한 테이블의 다른 행에서 빼는 값으로 MySQL 날짜 시간 열 업데이트

  5. 5

    loc 함수로 인덱스를 알고있는 값이 동일한 인덱스의 다른 열을 업데이트 할 수없는 문제는 무엇입니까?

  6. 6

    SQL Server에서 동일한 테이블의 한 열에있는 값을 다른 열로 업데이트

  7. 7

    SQL-동일한 DOB를 가진 서로 다른 테이블의 두 열에서 행을 찾는 명령

  8. 8

    다른 값으로 구분 된 동일한 열 값이있는 행 집합에 고유 그룹 ID 할당

  9. 9

    어떻게 갱신 팬더 열 셀 값에 대한 행 수준에있는 다른 열 이름을 가진 일부 요소의 유사성을 기반으로

  10. 10

    SQL : 동일한 테이블에서 다른 값의 길이를 조건으로 열 값 업데이트

  11. 11

    동일한 ID를 사용하지만 Python의 열에서 일부 다른 값을 가진 데이터 프레임의 레코드를 처리하는 방법

  12. 12

    한 열의 값을 R의 다른 열에있는 동일한 값을 가진 행으로 복사하려면 어떻게해야합니까?

  13. 13

    동일한 ID를 가진 행의 다른 열에서 값 선택

  14. 14

    동일한 열의 다른 값으로 MySQL 행을 업데이트하는 방법은 무엇입니까?

  15. 15

    다른 열의 값을 기반으로하지만 동일한 행에있는 열에 여러 셀 추가

  16. 16

    동일한 ID를 가진 다른 테이블의 행에 다른 열의 특정 값이있는 경우를 제외하고 테이블에서 모든 행을 선택합니다.

  17. 17

    Python의 동일한 DataFrame에있는 다른 열에 의존하는 열의 값 업데이트

  18. 18

    다른 열의 동일한 행에있는 값과의 비교를 기반으로 셀 수 계산

  19. 19

    동일한 데이터 프레임의 다른 열에있는 문자를 기반으로 데이터 프레임에 텍스트 열 추가

  20. 20

    NA를 r의 각 그룹에 대해 동일한 열의 다른 행에있는 값으로 바꿉니다.

  21. 21

    동일한 테이블에있는 다른 열의 정보가 포함 된 Oracle 트리거 업데이트 열

  22. 22

    새 데이터를 일괄 적으로 추가하여 R의 다른 열에있는 고유 한 값을 기반으로 오름차순 값 열 만들기

  23. 23

    행에 동일한 "A 열"값이있는 경우 빈 "B 열"셀을 마지막으로 알려진 값으로 채우기

  24. 24

    동일한 ID를 가진 다른 테이블의 모든 값 업데이트

  25. 25

    동일한 테이블에있는 여러 다른 열의 결합 된 결과로 열 업데이트

  26. 26

    다른 열에없는 동일한 ID 목록 값을 가진 각 레코드의 경우

  27. 27

    동일한 열 값을 가진 특정 수의 레코드를 다른 테이블에 삽입

  28. 28

    트리거를 사용하여 매개 변수가있는 다른 테이블에서 열이 업데이트 될 때 한 테이블의 열 업데이트

  29. 29

    Python, 동일한 ID를 가진 행 병합-날짜이지만 한 열에 다른 값

뜨겁다태그

보관