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

时间:2015-03-06 00:25:15

标签: mysql sql-delete

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

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

此数据库没有视图。

1 个答案:

答案 0 :(得分:0)

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