请你帮我解决这个问题:
SELECT
(SELECT AES_DECRYPT(cryptoword, SHA2('DatabaseEncryption1', 512)) FROM file_tree) AS cryptoword1,
(SELECT AES_DECRYPT(name, SHA2(cryptoword1, 512)) FROM file_tree) AS name;
如主题所述,我收到错误消息说我的子查询返回多于 1 行。我希望实现的目标是:
- 获取特定数据库记录的密码。
- 使用该密码解密记录的其余部分。
- 对所有满足WHERE条件的表记录/多条记录重复该过程,我可以稍后添加
如果我只对一条记录使用查询,我的查询就有效。但是,我需要从表中获取多条记录。每条记录都有自己的密码,每一行都不同。因此,我的任务是获取特定记录的密码,并使用该密码来解密记录的其余部分。我需要对所有表记录重复此过程。
由于性能原因,所有这些都需要在一个查询中进行格式化。
提前谢谢你。
最佳答案
在子查询中计算出 cryptoword1
的值,然后您可以重用该结果在外部查询中计算出 name
的值。
SELECT
cryptoword1,
AES_DECRYPT(name, SHA2(cryptoword1, 512)) AS name
FROM
(
SELECT
AES_DECRYPT(cryptoword, SHA2('DatabaseEncryption1', 512)) AS cryptoword1,
name
FROM
file_tree
)
AS sub_query
关于MySQL 错误消息 : Subquery Returns More than 1 Row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22276433/