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)。
我倾向于相信这很可能是真的。无论如何,正如您在我的答案的第一部分中看到的那样,在这种特殊情况下您实际上不需要通过变量。
| 归档时间: |
|
| 查看次数: |
11810 次 |
| 最近记录: |