【问题标题】:Store different fields from different tables to a temporary table将不同表中的不同字段存储到临时表中
【发布时间】:2016-12-02 14:29:05
【问题描述】:

我正在尝试创建一个临时表,其中包含两个字段(用户、密码),这是三个表的组合

表格

agents
username | password

clients
username | password

admin
username | password

我希望将他们字段中的数据存储到临时表中

临时表

temp_tbl
username | password

这是我的 MySQL 查询(我知道这是错误的语法)

CREATE TEMPORARY TABLE temp_tbl ENGINE=MEMORY 
AS (SELECT username,password FROM agents UNION SELECT username,password FROM clients UNION SELECT username,password FROM admin) AS col1, col2;

【问题讨论】:

    标签: php mysql select union alias


    【解决方案1】:

    您的查询应该如下所示。根据 MySQL 文档,您也可以使用 CTAS 构造来创建 temporary 表。

    CREATE TEMPORARY TABLE temp_tbl
    AS (SELECT username, password FROM agents 
    UNION 
    SELECT username, password FROM clients 
    UNION 
    SELECT username, password FROM admin);
    

    【讨论】:

    • @topic starter 你可以用UNION ALL 来保持重复
    【解决方案2】:

    很接近

    CREATE TEMPORARY TABLE temp_tbl ENGINE=MEMORY 
    AS SELECT * FROM 
     (SELECT username,password FROM agents 
     UNION SELECT username,password FROM clients 
     UNION SELECT username,password FROM admin) AS t1;
    

    您必须将这三个联合包装在另一个 SELECT 中,并且您需要为该派生表指定一个别名。请一个名字不要两个(t1 而不是 col1, col2)

    除非你像我所做的那样将整个事情包裹在另一个查询中,否则你会得到一个语法错误。

    【讨论】:

      【解决方案3】:
      CREATE VIEW all_user AS
         SELECT * FROM agents
         UNION ALL
         SELECT * FROM clients
         UNION ALL
         SELECT * FROM admin
      

      【讨论】:

        猜你喜欢
        • 2012-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多