创建基于插入选择的插入?

时间:2018-09-19 18:42:10

标签: mysql sql

我试图弄清楚如何基于带有连接的select语句创建插入。

基本上,我想获取一个合并的记录,并为其创建一个新副本,并将其分配给一个新的显示器(页面表中的display_id)。所以我有一个现有的页面记录加入到面板记录中,并且在面板表中引用了pageID。我只想再创建一条记录,但在页面表中插入一个新的display_id。

SELECT p.id as pageID, p.title as pageTitle, p.page_type_id, p.display_id, p.start_time, p.end_time, p.duration, p.active, p.background_img, pn.id as panelID, pn.panel_type_id, pn.page_id, pn.cont_id as contentID, pn.active as panelActive, c.id as contentID, c.content as content
    FROM pages p
        INNER JOIN panels pn
            on pn.page_id = p.id
        INNER JOIN content c
            on pn.cont_id = c.id
    WHERE p.id = 286;

结果:

pageID  |  pageTitle  |  page_type_id  |  display_id  |  duration  |  active  |  background_img  |  panelID  |  panel_type_id  |  page_id  |  contentID  |  panelActive  |  contentID  |  content
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
200         TEST            2               1               30          1           test.jpg            2           1               200         123             1              123          test

我需要像上面的记录一样创建一个插入记录的插入,但是它将在pages表中设置一个新的display_id。其他一切都完全一样。

诀窍是,我必须在pages和panels表中插入一个新记录以供参考。因此,这将在pages表中创建一个新的id,panels表也引用了该id。面板表通过ID引用了该内容,因此我认为该内容实际上可以保持不变。

如何基于该选择/联接执行插入操作,但声明一个新的display_id?

示例:

如果我有基于上面选择的插入内容。我想在页面/面板表中创建新记录,但是我要将此页面/面板/内容组合指定为显示4,我希望:

pageID  |  pageTitle  |  page_type_id  |  display_id  |  duration  |  active  |  background_img  |  panelID  |  panel_type_id  |  page_id  |  contentID  |  panelActive  |  contentID  |  content
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
201         TEST            2               4               30          1           test.jpg            2           1               201         123             1              123          test

请注意,除了页面表中的新页面ID(也由面板引用)以外,它几乎相同。因此,它将在页面中插入一条新记录,但该新ID也将在面板中作为page_id插入。

0 个答案:

没有答案