假设我有一个包含敏感信息的mysql数据库,并且我想对一些数据进行无序处理,比如用lastname列中的值交换lastname列中的值,而只交换来自另一个用户的同一列中的值。
注意:数据库将由开发人员使用,我不希望他们能够访问真实的信息,因此使用select的建议无法解决问题,我看到softdataveil可以做到这一点,但在mysql中没有
示例user1从user4接收lastname
原始数据
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中不执行shuffle
2条答案
按热度按时间hgncfbus1#
您可以使用会话变量来获取行号。
在两个独立的派生表中,获取
Fristname
,和Lastname
(后者随机排列)。把他们两个连在一起。自
Lastname
是随机排列的,你会得到不同的Lastname
为了一个Fristname
.这种方法将确保系统中没有重复项
Lastname
柱mysql的所有版本:尝试以下操作(SQLFiddle演示):
cwdobuhd2#
如果你不介意在姓氏一栏重复
您可以用一个简单的子查询来完成它,子查询的顺序和限制是随机的。
查询
可能的结果
db fiddle视图