【问题标题】:Populate Table with two MySQL Loops使用两个 MySQL 循环填充表
【发布时间】:2013-08-25 13:11:12
【问题描述】:

我有 3 个表名为:TableA、TableB、TPopulate

表格:A,B 有一些行我需要在没有存储过程的情况下普及表格(TPopulate),例如 PSEUDOCODE:

@loop1 = 1;
@loop2 = 1;
WHILE loop1 <= (Select COUNT(*) FROM TableA)
    WHILE loop2 <= (Select COUNT(*) FROM TableB)
        INSERT INTO TPopulate (column1, column2) VALUES (TableA.column1, TableB.column1)
    END;
END;

TableA Represent (users)
TableB Represent (Privileges)
TPopulate Represent (Users_Privileges)

我尝试做的是将所有权限插入所有现有用户。

【问题讨论】:

    标签: mysql sql loops while-loop populate


    【解决方案1】:

    您根本不需要使用循环。使用关系数据库时,您应该考虑 SETS。

    这是实现这一目标的正确方法。首先使用 CROSS JOIN 创建一个笛卡尔集合,其中包含 tableA 和 tableB 中的所有 id 组合。然后将整个集合插入 TPopulate

    INSERT INTO TPopulate (column1, column2)
    SELECT  T1.PKField
            ,T2.PKField
    FROM    TableA T1
    CROSS JOIN
            TableB T2
    

    【讨论】:

      猜你喜欢
      • 2020-01-07
      • 1970-01-01
      • 2023-03-09
      • 2017-10-30
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      • 2020-05-25
      相关资源
      最近更新 更多