MySQL 错误消息 : Subquery Returns More than 1 Row

标签 mysql sql

请你帮我解决这个问题:

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 行。我希望实现的目标是:

  1. 获取特定数据库记录的密码。
  2. 使用该密码解密记录的其余部分。
  3. 对所有满足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/

相关文章:

php - MySQL/PHP 如何设置和填充关系数据库以一次插入几行?

MySQL:查询优化

php - Mac 原生 PHP/Mysql 安装,激活 PDO 驱动

mysql - 在sql中选择具有一组行的最大值的行

java - SQLException:没有为参数 9 指定值

mysql - 在 WHERE 中使用来自 SELECT 的值

sql - Laravel 查询生成器输出测试

mysql - 存储所有用户的登录日期

php - 使用 php 和 mysql 将从数据库检索到的值传递到另一个页面

mysql - 如何选择 - 更新然后将值复制到另一个表(批量)