簡體   English   中英

MySQL使用內部聯接的值插入表

[英]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代碼

我相信23Yellow是記錄,並且您需要為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM