[英]MySQL Insert into table with values from Inner Join
我試圖將數據插入清單表,從一個單獨的用戶表中提取一個UserID來填充字段之一。
Inventory:
ProductID | PurchasedByUser | OtherAttributes
和用戶表;
Users:
DBID | UserActive | UserName
1 | 1 | mathew
到目前為止,我的SQL看起來像:
INSERT INTO Inventory (ProductID, PurchasedByUser, OtherAttributes)
SELECT 23, U.DBID, 'Yellow'
FROM Inventory U INNER JOIN Users ud
ON U.DBID = ud.DBID AND ud.UserActive = 1 AND UserName = 'mathew'
編輯:我希望能夠發出一個SQL INSERT請求,以將ProductID(INT),PurchasedByUser(Users.DBID),OtherAttributes(String)添加到Inventory表,而無需暴露DBID並僅傳遞UserName字段。
在查詢中, U.DBID
是錯誤的,因為U
是庫存的別名,因此請更改並放入ud.DBID
,您的查詢將得到解決。
INSERT INTO Inventory (ProductID, PurchasedByUser, OtherAttributes)
SELECT 23, ud.DBID, Yellow
FROM Inventory U INNER JOIN Users ud
ON U.PurchasedByUser = ud.DBID AND ud.UserActive = 1 AND ud.UserName = 'mathew'
將U.DBID更改為ud.DBID
INSERT INTO Inventory (ProductID, PurchasedByUser, OtherAttributes)
SELECT 23, ud.DBID, 'Yellow'
FROM Inventory U INNER JOIN Users ud
ON U.PurchasedByUser = ud.DBID AND ud.UserActive = 1 AND ud.UserName = 'mathew';
在所構造的SQL查詢中,您引用的是庫存表U的DBID。 從您共享的結構來看,我認為您需要以下查詢:
INSERT INTO Inventory (ProductID, PurchasedByUser, OtherAttributes)
SELECT 23, ud.DBID, Yellow
FROM Inventory U INNER JOIN Users ud
ON U.PurchasedByUser= ud.DBID AND ud.UserActive = 1 AND UserName = 'mathew'
我仍然對在這里要實現的目標感到困惑,您正在從清單中獲取值,然后再次將其重新插入。.不確定。.只是試圖幫助您確定查詢!
您可以分兩步完成此過程。 首先獲取用戶的ID:
SELECT DBID
FROM Users
WHERE UserActive=1 AND UserName='mathew';
有了用戶ID后,您可以使用第二個查詢將其插入到Inventory
表中:
INSERT INTO Inventory (ProductID,PurchasedByUser,OtherAttributes )
VALUES(23,<THE-USER'S-ID>, 'Yellow');
我假設您知道如何在PHP中執行此操作,因為您不要求使用PHP代碼
我相信23
& Yellow
是記錄,並且您需要為mathew
quote
。
INSERT INTO Inventory (ProductID, PurchasedByUser, OtherAttributes)
SELECT 23, U.DBID, Yellow
FROM Inventory U INNER JOIN Users ud
ON U.DBID = ud.DBID AND ud.UserActive = 1 AND UserName = mathew
對此
INSERT INTO Inventory (ProductID, PurchasedByUser, OtherAttributes)
SELECT ProductID, PurchasedByUser , OtherAttributes
FROM Inventory U INNER JOIN Users ud
ON U.DBID = ud.DBID AND ud.UserActive = 1 AND UserName = 'mathew'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.