如何通过MySQL中加密的字段查询结果顺序

时间:2018-10-26 02:48:37

标签: mysql

有一个包含10万行数据的表,如下所示:

CREATE TABLE `person_department_ref` (
  `id` bigint(12) NOT NULL AUTO_INCREMENT,
  `account` varchar(64) NOT NULL,
  `department_id` varchar(64) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  KEY `account_department_normal` (`account`,`department_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=282 DEFAULT CHARSET=utf8

我使用Java代码用"account"AESEncrypt进行编码,然后将数据插入表中。

我可以使用

"select distinct r.account from person_department_ref r order by r.account"
如果没有加密,请使用KEY(account_department_normal)

那么我该如何使用加密数据和KEY查询相同的结果?

1 个答案:

答案 0 :(得分:0)

如果将对加密列使用order by,则Mysql将基于加密列给出按结果排序,因此数据将与您提到的查询数据不匹配。在这种情况下,您可以将表中的两个列(account和account_encypted_value)都保留在表中,并且可以通过查询根据常规帐户顺序检索加密的帐户数据。

I/flutter (13029): outer - BoxConstraints(0.0<=w<=961.5, 0.0<=h<=552.9)
I/flutter (13029): inner - BoxConstraints(unconstrained)

希望这对您有所帮助。