我需要将标识符(数字)插入到满足几个条件的临时表中。
我使用insert into select
结构。
其中一个条件是下一个。有表received_posts_1(id,post_id), received_posts_2(id,post_id)
...
每个选定的标识符都是收到帖子的表名的一部分。我需要在下一个表单的and
子句中添加where
部分。
and not exists(select 1 from CURRENT_RECEIVED_POSTS_TABLE where id = device_id and post_id = post_id_)
插入时间为while
。停止条件是要插入的标识符的必要计数。
答案 0 :(得分:1)
具有相同结构的多个表通常是数据库设计不佳的标志。一般来说,拥有一个表格会更好,其中的列可以区分您要执行的操作。
一种方法是使用视图创建这样的表:
create view received_posts
select 1 as which, r.* from received_posts_1 r union all
select 2, r.* from received_posts_2 r union all
. . .;
然后,您可以在查询中使用此表。
更有效的方法是在适当的条件下重复存在:
not exists(select 1
from received_posts_1
where id = device_id and post_id = 1) and
not exists(select 1
from received_posts_2
where id = device_id and post_id = 2) and
. . .
如评论中所述,如果您知道特定调用查询所需的邮政表,则可以使用动态SQL。