2015-12-26 6 views
2

Здесь структура 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 таблице. Вот эти 2 вещи, которые я пытаюсь выполнить:

  1. Поскольку каждая строка копируется, я хотел бы изменить status от NEW к COMPLETE.

  2. Я хотел бы удалить URL-адрес и вывести только домен в новый столбец.

Вот пример того, что 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 

Я знаю, что можно просто скопировать таблицы более. Я предполагаю, что я запутался в том, как я могу удалить URL, чтобы просто показать домен, а затем обновить статус для этой строки в table_1.

Кстати, я пытаюсь использовать все это в PHP.

Можете быть новичком вопрос, извините, если все. Просто пытаюсь работать на сайте и не могу это понять.

+0

Мой совет должен попытаться выполнить операцию в MySQL, как он быстрее (нет необходимости извлекать данные, изменять + вставлять во вторую таблицу). Устранение URL-адресов можно сделать, рассмотрев подстроку между: // и первым/после этого, но она может дать результаты в таких случаях, как http: // domain: port/page – Alexei

+1

Хороший подробный вопрос. – Chizzle

+0

Хороший вопрос отлично – devpro

ответ

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) 
+0

Да ... это не сработает. Он не включает новый столбец 'domain'. Кроме того, это выбор строк со статусом, установленным на 'COMPLETE'. Мне нужно выбрать строки, которые являются «NEW», а затем изменить статус в 'table_1' на' COMPLETE' после того, как они были скопированы в 'table_2'. – user10848

+0

Я знаю, брат. Вы можете использовать [link/http: //stackoverflow.com/questions/3521094/how-we-can-find-domain-name-using-mysql-and-regular-expression? Lq = 1 [/ link] –

+0

@ пользователь10848. думаю, ваша проблема решена. –