创建表3 AS SELECT WHERE id from table1 = id from table2

时间:2017-09-04 18:21:56

标签: mysql sql

我尝试过:

CREATE TABLE temporary_bundle_wired 
 AS SELECT * FROM temporary_bundle,wired_items 
 WHERE temporary_bundle.id = wired_items.id;

我有两张现有表格:

  1. temporary_bundle
  2. wired_items
  3. 我想创建一个名为temporary_bundle_wired的第三个表。 在此表中,我想从temporary_bundle WHERE temporary_bundle.id = wired_items.id

    插入所有行(及其列和字段)

    我还希望在将temporary_bundle移至tempoary_bundle_wired后从duplicate column name Id删除这些记录。

    我试过的查询返回:

    RewriteEngine on RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [L,R=301] AuthType Basic AuthName "test" AuthUserFile /home/www/.htpasswd Require valid-user

3 个答案:

答案 0 :(得分:1)

问题是两个表都有一个名为 id 的列,而您正在选择两个用于创建新表的列。 您必须指定其中一个表的每一列,以便重命名id列:

CREATE TABLE temporary_bundle_wired 
AS SELECT a.id as 'othername', user_id, base_item, ..., b.* 
    FROM temporary_bundle a, wired_items b 
    WHERE temporary_bundle.id = wired_items.id;

干杯。

答案 1 :(得分:1)

  

我试过的查询返回:   duplicate column name Id

上述错误明显表示您有重复的列。您正在创建的新表中的列名(id)在两个旧表之间发生冲突'共同属性(temporary_bundle.idwired_items.id

确保两个表之间没有其他公共属性。如果存在,则在插入之前将它们从表中的任何一个别名。

如果其他人不工作,请尝试此操作。

CREATE TABLE temporary_bundle_wired 
AS 
SELECT 
 t.id as id, user_id, base_item, extra_data, x, y, z, rot, wall_pos, limited_number, limited_stack, sandbox  -- and all other attributes you want
FROM temporary_bundle t, wired_items w
WHERE t.id = w.id;

删除 - 这是一个不同的查询。

DELETE from temporary_bundle t WHERE t.id = (select id from wired_items);

答案 2 :(得分:0)

确实有一个问题是id在两个表之间是相同的。其他列也可以,但如果id是唯一的问题,那么使用using子句:

CREATE TABLE temporary_bundle_wired AS
    SELECT *
    FROM temporary_bundle JOIN
         wired_items 
         USING (id);