我试图弄清楚如何基于带有连接的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插入。