请你帮我解决这个问题:
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行。我希望实现的目标是:
如果我仅对一条记录使用查询,则我的查询有效。但是,我需要从表中获取多个记录。每条记录都有自己的密码,每行都有不同的密码。因此,我的任务是获取特定记录的密码,并使用该密码解密记录的其余部分。我需要为所有表记录重复此过程。
由于性能原因,所有这些都需要在一个查询中进行格式化。
提前谢谢。
答案 0 :(得分:2)
在子查询中计算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
答案 1 :(得分:0)
select语句中的子查询必须求值为单个值,否则您将收到此错误。这是有道理的,因为您希望填充一个字段的值。