多行输出到MySQL中的变量

Raj*_*aju 5 mysql subquery mysql-error-1242

以下查询似乎仅在有一个dateOfBirth设置为的单个条目时才起作用1975-02-28.

当有多个记录符合此条件时,它会失败.

是否可以删除属性dateOfBirth设置为的用户的所有地址1975-02-28而不使用子查询?

SELECT @id:=(SELECT id
             FROM USER
             WHERE dateOfBirth='1975-02-28');
DELETE FROM Address
WHERE user_id=@id;
Run Code Online (Sandbox Code Playgroud)

我得到的确切错误是:Error Code: 1242 Subquery returns more than 1 row..

小智 1

如果有多个这样的条目,SELECT子查询将返回一个 ID 表。

您不能让 ID 等于表。尝试这个:

DELETE FROM Address
WHERE user_id IN (SELECT id
                  FROM USER
                  WHERE dateOfBirth='1975-02-28');
Run Code Online (Sandbox Code Playgroud)

编辑:

看起来,根本不可能在 MySQL 变量中存储多个值,如以下查询中所尝试的那样:

SELECT @ids:=(SELECT id
              FROM USER
              WHERE dateOfBirth='1975-02-28');
Run Code Online (Sandbox Code Playgroud)

这个解释主要基于很多人写的(通常用“据我所知”来限定)。

我可以找到很多这样的答案,但没有任何页面可以反驳这一说法。这些答案的几个例子可以在 SO 上找到(例如: https: //stackoverflow.com/a/3156565/3401018)。

我倾向于相信这很可能是真的。无论如何,正如您在我的答案的第一部分中看到的那样,在这种特殊情况下您实际上不需要通过变量。