有兩張表,A表有product_id和product_name這兩個欄位,且這兩個欄位都是本來已有資料;
B表也有同樣的兩個欄位,但是B表的product_id一開始為空,需要通過匹配A表的product_name來得到數值;
我打算用mysql for excel匯入資料到A表,匯入的時候,A表就自動去B表匹配得到product_id的資料;
我在workbench是這么設定的;

但是這么報錯的:

嘗試了多種方法:
包括刪掉 sql-mode的 strict_trans_tables,都沒用。
請教一下大神這個問題要如何解決?
uj5u.com熱心網友回復:
product_id是主健,插入資料行的時候不能為空。你可以先把主鍵標示洗掉,等資料錄入完畢之后,再設為主鍵
uj5u.com熱心網友回復:
你好,我試過取消設定主鍵、取消非空,都還是一樣的報錯。 昨晚我換了另外一個語法,結果報了另外一種錯誤。如下圖:
uj5u.com熱心網友回復:
你這SQL是要干嘛?又改表結構又插資料的,陳述句也沒間斷,插入也沒列名,我看著像庫名、表名、列名串在一起用,亂七八糟的uj5u.com熱心網友回復:
這是要實作什么目的呢?是把這一長長的字串做為默認值,還是把這個查詢的結果做為默認值呢?
uj5u.com熱心網友回復:
我是做電商運營的,每天的資料太多,沒辦法自學mysql
。編輯資料庫我用mysql workbench, 不是用cmd。
業務場景是這樣的:
有2張表,第一張表,產品資訊表里面有產品id和產品標題這兩個欄位,這張表是人工維護的,這兩個欄位的資訊都是全的。
第二張表,業務資料表,也有產品id和產品標題這兩個欄位, 但是表一開始只有產品標題有資料,需要通過sql去第一張表里獲取對應的產品id。(類似excel的vlookup功能)
所以我就在第二張表的產品id這個欄位里加sql陳述句。
但我剛才百度了下,好像mysql的欄位的默認值無法設定為sql陳述句? 不知道有什么技術方案可以解決這個問題。
難點在于產品標題基本每天都會發生變化,所以第一張表是替換更新的。 預期實作的效果是:每天早上首先更新第一張表,然后把第二張表匯入mysql,匯入的時候第二張表就去第一張表獲取產品id數值。
按這種預期,第一張表的產品id是UQ; 第二張表的產品id不是UQ,因為第二張表是要用來存放每天的業務資料,每天都有相同產品id的記錄。
不知道通過添加triggers是否能實作?
謝謝大神。
uj5u.com熱心網友回復:
用triggers監聽第二張表的insert陳述句,然后在里面寫邏輯取獲取第一張表的id之后再插入就好了uj5u.com熱心網友回復:
要實時就用觸發器,否則先導進去,再update。uj5u.com熱心網友回復:
謝謝大神,用triggers已經實作了單條記錄匯入,還在研究如何一次匯入多少條資料(匯入多潭訓報error1072, result consisted of more than one row)CREATE DEFINER=`pilotsea`@`%` TRIGGER `update_productid` BEFORE INSERT ON `product_data` FOR EACH ROW begin
DECLARE new_product_id VARCHAR(50);
SELECT product_idinfo into new_product_id from product_info i where i.product_name=new.product_name_data;
set new.product_id = new_product_id;
end
triggers這樣寫,不知道是不是有些地方要改一下。
uj5u.com熱心網友回復:
new里面應該都是單條資料吧,多條的話那邏輯得大改了要么就是查詢的表資料一對多了,SELECT propduct_idinfo into new_product_id 這里,查出來的結果不止一個賦給變數了
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/11394.html
標籤:疑難問題
上一篇:SQL中如何回圈計算
下一篇:spss是啥
