我有一個臨時表在MySQL爲:怎麼辦Mysql的插入查詢與多個SELECT語句
CREATE TEMPORARY TABLE RolesAndPermissions(
ParentPermissions VARCHAR(255) DEFAULT NULL,
ChildPermissions VARCHAR(255) DEFAULT NULL,
OrgPermissions VARCHAR(255) DEFAULT NULL);
現在,我有我的模式3代普通表這是ParentPermissions
,ChildPermissions
和OrgPermissions
。其中每一個都有一些值,在所有這些表中可能都是相同的,如CanEdit
,CanDelete
等等。現在我想要做的就是從這些表中獲取權限並插入臨時表中。我用this作爲一個例子來建立一個插入語句與多個選擇查詢,但不知何故我得到重複。好比說我3所選擇查詢的是:
SELECT Perm_Name FROM ParentPermissions -> Returns 19 rows
SELECT Perm_Name FROM ChildPermissions -> Returns 19 rows
SELECT Perm_Name FROM OrgPermissions -> Returns 57 rows
我想要的結果集是完全一樣的,但上面即時得到在臨時表19*19*57=20577
行。這裏是我的查詢看起來是這樣的:
INSERT INTO
RolesAndPermissions (ParentPermissions,ChildPermissions,OrgPermissions)
SELECT
f1.Perm_Name, f2.Perm_Name, f3.Perm_Name
FROM
(SELECT Perm_Name FROM ParentPermissions)AS f1
CROSS JOIN
(SELECT Perm_Name FROM ChildPermissions)AS f2
CROSS JOIN
(SELECT Perm_Name FROM OrgPermissions)AS f3
請諮詢
你打算如何處理的事實,3個的結果集是不同大小的? –
@TimBiegeleisen:我將默認值添加爲空,所以我期待如果沒有找到任何值,它將會爲空? – user9517536248
如果三個表中的'Perm_Name'值沒有任何共同之處,那麼您無法輕鬆地將它們連接在一起,因爲沒有關係。 –