如何将行从一个表复制到另一个表?

时间:2015-12-26 07:08:39

标签: php mysql mysqli

这里是table_1的结构:

id, website, time, status
25296171, http://example.com/login.php, 2015-12-26 00:49:06, NEW
25296172, http://www.stackoverflow.com/sample.html, 2015-12-26 01:25:29, NEW
25296173, https://britain.co.uk/fwef/wefwef/eep, 2015-12-26 01:26:05, NEW
25296174, http://subdomain.hello.net/random.php, 2015-12-26 01:27:05, NEW

我要做的是将此表格中status设置为NEW的所有行复制并复制到table_2表格。以下是我要完成的两件事:

  1. 复制每一行时,我想将statusNEW更改为COMPLETE

  2. 我想剥离网址,只在新列中输出域名。

  3. 以下是table_2的示例:

    id, domain, website, time, status
    25296171, example.com, http://example.com/login.php, CURRENT_TIMESTAMP, NEW
    25296172, stackoverflow.com, http://www.stackoverflow.com/sample.html, CURRENT_TIMESTAMP, NEW
    25296173, britain.co.uk, https://britain.co.uk/fwef/wefwef/eep, CURRENT_TIMESTAMP, NEW
    25296174, hello.net, http://subdomain.hello.net/random.php, CURRENT_TIMESTAMP, NEW
    

    我知道可以简单地复制表格。我猜我在哪里弄糊涂了如何删除网址只显示域名,然后在table_1更新该行的状态。

    顺便说一下,我试图用PHP处理这一切。

    可能是一个新手问题,对不起,如果是这样的话。只是想在一个网站上工作并且无法解决这个问题。

1 个答案:

答案 0 :(得分:2)

您可以使用新字段复制所有数据:

以下是如何获取table_2所需数据的示例 SQlFiddle

INSERT INTO table_2 
SELECT id,SUBSTRING_INDEX(REPLACE(website, 'http://', ''), '/', 1),website,status 
FROM table_1 
WHERE status="NEW"

AND Update table_1  

UPDATE table_1 SET status="COMPLETED" where id in ( SELECT id from table_2 )