mysql加密字段查询结果顺序

41zrol4v  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(413)

有一个包含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"

如果没有加密,则使用密钥(帐户\部门\正常)。
那么,如何使用加密数据和密钥查询相同的结果呢?

sqyvllje

sqyvllje1#

如果您使用order by to encrypted column,那么mysql将在加密列的基础上给出order by result,因此数据将与您提到的查询数据不匹配。在这种情况下,您可以保留表中的两个列(account和account\u encypted\u value),并且可以通过查询在正常帐户顺序的基础上检索加密的帐户数据。

select distinct r.account_encypted_value from person_department_ref r order by r.account

希望这对你有帮助。

相关问题