我有兩個子查詢的INSERT查詢:SQL插入子查詢的錯誤
INSERT INTO Work_Order (ID ,BRANCHID,BRANDID)
VALUES (66),
SELECT ID FROM Brands WHERE NAME = 'branch'
SELECT ID FROM Branches WHERE NAME = 'brand'
我知道這是不是一個正確的語法,但我需要一個正確, 的ID必須是66和BRANCHID,BRANDID外鍵另一個表
我有兩個子查詢的INSERT查詢:SQL插入子查詢的錯誤
INSERT INTO Work_Order (ID ,BRANCHID,BRANDID)
VALUES (66),
SELECT ID FROM Brands WHERE NAME = 'branch'
SELECT ID FROM Branches WHERE NAME = 'brand'
我知道這是不是一個正確的語法,但我需要一個正確, 的ID必須是66和BRANCHID,BRANDID外鍵另一個表
如果您的子查詢返回多行,您必須決定如何組合這些值。下面的查詢假設你希望所有的組合:
INSERT INTO Work_Order (ID ,BRANCHID, BRANDID)
select 66, branches.id, brands.id
from brands cross join branches
where branches.NAME = 'branch' and
brands.NAME = 'brand'
(我改變了where子句在同一個表中查找名作爲名稱branches.Name =「分支」,而不是branches.name =。 「品牌」。)
這就是我所做的,它的工作完美。 – 2012-07-22 19:35:07
66
是文字,用它和兩個子選擇在您的SELECT
:
INSERT INTO Work_Order (ID ,BRANCHID,BRANDID)
SELECT
66 AS ID,
(SELECT ID FROM Brands WHERE NAME='branch') AS BRANCHID,
(SELECT ID FROM Brands WHERE NAME='brand') AS BRANDID
MySQL是寬鬆些一個FROM
條款的存在,所以這應該工作。許多其他RDBMS將要求您在某個表中輸入FROM
子句,即使它未在SELECT
(如Oracle的Dual
表中)中使用。
這是怎麼跟我
INSERT INTO Work_Order (NUMBER,BRANDID,BRANCHID)
SELECT 66,B.ID,Br.ID
FROM Brands as B,Branches as Br
WHERE B.NAME = 'brand' AND Br.NAME = 'branch'
如果你是通過獲取從另一個表的東西,那麼你的設計是錯誤的東西插入到數據庫中完美地工作。我說重新思考。 – nawfal 2012-07-22 19:40:49
看我不是DB專業人員,設計由3個表格組成,第一個是我插入的表格,BRANCHID是另一個稱爲分支的表格的外鍵,同樣用於品牌,用戶將分支的名稱我會插入它的ID,我認爲這是一個很好的設計,不是嗎? – 2012-07-22 21:55:47
哦,我很愚蠢,那很好,我有一刻以爲你插入'分支','品牌'等,而不是他們的ID。道歉.. :) – nawfal 2012-07-23 06:36:24