알려진 목록에서 무작위로 선택한 문자열로 테이블의 필드를 어떻게 업데이트합니까?

StackOverflow https://stackoverflow.com/questions/449337

  •  19-08-2019
  •  | 
  •  

문제

"건물"이라는 테이블이 있습니다. 이 테이블에는 이미 수천 개의 레코드가 있지만 "사용"값은 모두 널입니다. 이 테이블을 문자열 목록에서 무작위로 선택한 값으로 업데이트하고 싶습니다. (예 : 창고, 사무실, 시장, 소매, 워크숍). 또한 실제 세계 사용을 모방하기 위해이 널 중 일부를 남겨두고 싶습니다.

알려진 목록에서 무작위로 선택한 문자열로 테이블에서 필드를 업데이트하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

이것은 당신에게 효과가있을 수 있습니다 :

BEGIN;
UPDATE Buildings SET Use = (ARRAY['warehouse', 'office', 'market', 'retail', 'workshop', NULL])[floor(random() * 6.0) + 1];
COMMIT;

다른 팁

무작위는 아니지만 IDS의 실질적으로 균일 한 분포가있는 경우 이것은 멋지고 쉬운 방법입니다.

UPDATE Buildings SET Use = 'warehouse' WHERE ID % 6 = 0
UPDATE Buildings SET Use = 'office'    WHERE ID % 6 = 1
UPDATE Buildings SET Use = 'market'    WHERE ID % 6 = 2
UPDATE Buildings SET Use = 'retail'    WHERE ID % 6 = 3
UPDATE Buildings SET Use = 'workshop'  WHERE ID % 6 = 4
UPDATE Buildings SET Use = NULL        WHERE ID % 6 = 5

이것은 "무작위"접근 방식보다 거의 더 쉽고 빠를 것입니다. 그런 다음 다시, 충분히 무작위가 아닐 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top