【发布时间】:2013-10-10 15:14:57
【问题描述】:
在有subscriber_id 和letter_id 的表中,订阅者可能订阅了多个字母。如果人们订阅了任何其他信件,我想取消他们对某封信件的订阅。我需要帮助构建查询。我以前见过我可能称之为嵌套查询的东西,但我没有编写它们的经验。
我可以在 PHP 中通过首先查询如下:
SELECT subscriber_id FROM subscriptions WHERE letter_id=3
然后对结果运行 foreach 并删除subscriber_id 有多个匹配项的位置,但我敢打赌,如果我只知道如何做,MySQL 可以更快地做到这一点。
我试图在这里编写伪代码,但我什至挂断了电话。
如果有帮助,每行也有自己的 id。
【问题讨论】:
-
一个诚实且措辞得体的问题值得回答 ;-) 不幸的是,我(目前)还不知道如何回答,但我相信有人会很乐意提供帮助。
-
如果他们不能订阅多个,你应该在 (subscriber_id,letter_id) 上有一个唯一的键,那么问题就不会出现
-
@Dagon,他们可以订阅多个信件。这封信是个例外。太笼统了。一旦他们订阅了至少一封特定的信件,我需要将它们从一般信件中删除。数据库是应用程序的一部分,我的脚本正在以一种开发人员可能没有预料到的方式与之交互,所以我需要非常小心我所做的更改。
标签: php mysql sql-delete