根据其他表中的信息从 mysql 中删除行会给出难以理解的错误消息

delete row from mysql based on information in other tables gives unintelligible error message

我正在尝试根据在另一个相关 table 中找到的信息从第一个 table 中删除行。第一个测试是我得到正确的行:

mysql> select count(*) from stationinfluence where stationinfluence.station_id = 12024 and exists (select 1 from star where star.id = `stationinfluence`.`star_id` and pow(pow(star.x - -6,2)+pow(star.y-5,2),0.5) > 300);
+----------+
| count(*) |
+----------+
|        1 |
+----------+
1 row in set (0.00 sec)

只需使用 select * 即可显示它是正确的行。所以没关系。但是如果我采用完全相同的语句,但将 select count(*) 更改为 delete,我会收到一条我无法理解的错误消息:

mysql> delete from stationinfluence where stationinfluence.station_id = 12024 and exists (select 1 from star where star.id = stationinfluence.star_id and pow(pow(star.x - -6,2)+pow(star.y-5,2),0.5) > 300);
ERROR 1054 (42S22): Unknown column 's.star_id' in 'where clause'

我不知道它从哪里得到这个 s.star_id

此数据库没有视图。

发现 s.star_id 在 after delete 触发器中被引用,更改触发器解决了这个问题。