3
내 필요에 맞는 것을 찾지 못한 후에이 코드를 작성하여 mysql의 열 값을 일관되게 뒤섞습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?MySql에서 열을 뒤섞는 방법
**Original table:**
+----+-----------+
| id | fname |
+----+-----------+
| 1 | mike |
| 2 | ricky |
| 3 | jane |
| 4 | august |
| 6 | dave |
| 9 | Jérôme |
+----+-----------+
**Possible output:**
+----+-----------+
| id | fname |
+----+-----------+
| 1 | dave |
| 2 | jane |
| 3 | mike |
| 4 | ricky |
| 6 | Jérôme |
| 9 | august |
+----+-----------+
DROP TEMPORARY TABLE IF EXISTS shuffle1;
DROP TEMPORARY TABLE IF EXISTS shuffle2;
CREATE TEMPORARY TABLE shuffle1 (id int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), original_values varchar(255), key original_values(original_values));
CREATE TEMPORARY TABLE shuffle2 (id int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), original_ids int(11), key original_ids(original_ids));
INSERT INTO shuffle1 (id, original_values) SELECT NULL, table1.fname FROM table1 ORDER BY rand();
INSERT INTO shuffle2 (id, original_ids) SELECT NULL, table1.id FROM table1;
UPDATE table1 SET table1.fname = (SELECT shuffle1.original_values FROM shuffle1 JOIN shuffle2 ON shuffle2.id = shuffle1.id WHERE table1.id = shuffle2.original_ids);
당신의 목표는 여기에 무엇입니까? – tadman
데이터 sanitisation : first_name과 last_name의 두 열이있는 클라이언트 목록을 포함하는 프로덕션 테이블이 있다고 가정 해 봅시다. 테스트 환경에서 사용하려고하지만이 정보는 민감합니다. 칼럼 중 하나를 셔플하면 모든 원래 값과 사용자의 프라이버시가 유지됩니다. – Ronna
전체 데이터베이스를 복제 한 다음 특정 열의 값을 스크램블하고 임의의 데이터로 바꿉니다. 여기서하고있는 일은 말하기가 다소 혼란 스럽습니다. – tadman