Как сделать shuffle в базе данных mysql? - PullRequest
0 голосов
/ 03 октября 2018

Предположим, у меня есть база данных mysql с конфиденциальной информацией, и я хотел бы сделать случайное изменение некоторых данных, таких как обмен значениями из столбца фамилии на значения из того же столбца только от другого пользователя.

Примечание: база данных будет использоваться разработчиками, и я не хочу, чтобы у них был доступ к истинной информации, поэтому эти предложения, использующие select, не решали бы, я видел, что Soft DataVeil делает это, но не в mysql

Пример User1получает фамилию от пользователя user4

Оригинальные данные

Fristname    | Lastname
user1        |   lastname1
user2        |   lastname2
user3        |   lastname 3
user4        |   lastname4
user5        |   lastname5

Режим случайного воспроизведения

Fristname    |  Lastname
user1        |  lastname4
user2        |  lastname5 
user3        |  lastname2
user4        |  lastname1
user5        |  lastname3

Примечание. Я пытался использовать dataveil для этого, но, по-видимому, он не работает в случайном порядкеMySQL

Ответы [ 2 ]

0 голосов
/ 03 октября 2018
  • Вы можете использовать переменные сеанса для получения номера строки.
  • В двух отдельных производных таблицах получить Fristname и Lastname (последняя случайным образом упорядочена).
  • Присоединяйтесь к ним обоим по номеру строки.Поскольку Lastname упорядочен случайным образом, вы получите Lastname для Fristname.
  • . Этот подход обеспечит отсутствие дубликатов в столбце Lastname
0 голосов
/ 03 октября 2018

Если вы не возражаете против дубликатов в столбце ФамилияВы можете сделать это с помощью простого подзапроса со случайным порядком и лимитом.

Запрос

SELECT
   Table1.Fristname
 , (SELECT Table11.Lastname FROM Table1 AS Table11 ORDER BY RAND() LIMIT 1) AS  Lastname
FROM 
 Table1

Возможный результат

| Fristname | Lastname   |
| --------- | ---------- |
| user1     | lastname 3 |
| user2     | lastname 3 |
| user3     | lastname 3 |
| user4     | lastname5  |
| user5     | lastname4  |

Посмотреть на скрипку БД

...