【问题标题】:MySQL cross-table deleteMySQL 跨表删除
【发布时间】:2013-04-02 14:54:16
【问题描述】:

我正在尝试从两个 MySQL 表中删除:

1) table_images
2) table_images_links

所有具有相同 image_id 和 pair_id id 的行条目

1) table_images.image_id
2) table_images_links.pair_id

并且这个 id 的 table_images_links.il.object 应该完全等于 '猫'

我的查询是:

mysql_query("
DELETE FROM table_images im, table_images_links il 
WHERE im.image_id = il.pair_id 
AND il.object = 'cat'
");

问题是这个查询运行后什么都没有发生。

我的问题是:我怎样才能跟踪这个并根据我的需要使查询工作。

谢谢!

【问题讨论】:

  • 您是否进行了正确的错误处理,例如询问数据库在尝试执行查询时可能遇到的错误?您是否使用 phpMyAdmin 之类的前端尝试过该查询,结果如何?

标签: mysql sql join sql-delete


【解决方案1】:

DELETE语句中加入表时需要指定要删除行的表。在这种情况下,请使用表名上给出的 ALIAS

DELETE im, il                   -- this will delete row in both tables.
FROM   table_images im, table_images_links il 
WHERE  im.image_id = il.pair_id AND 
       il.object = 'cat'

DELETE im, il                   -- this will delete row in both tables.
FROM   table_images im
       INNER JOIN table_images_links il 
           ON  im.image_id = il.pair_id AND 
               il.object = 'cat'

【讨论】:

  • 是的!删除我,这正是它应该如何工作的!谢谢你的提示!!!
  • 它将在两个表中删除。如果你只想要 1 然后指定一个表例如 DELETE im..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多