Mysql
在mysql中插入查詢
我正在使用 MySQL。我有如下表:
CREATE TABLE test_table ( first_name VARCHAR(20), last_name VARCHAR(20), full_name VARCHAR(40) );
現在我想插入如下值:
INSERT INTO test_table VALUES('raju','pydi',CONCAT(first_name,last_name));
我知道這行不通,但它說明了我想要實現的目標。
我如何通過查詢來做到這一點?(不是過程或功能或其他)。
您可以執行以下操作:
INSERT INTO test_table (first_name,last_name,full_name) SELECT first_name,last_name , CONCAT(coalesce(first_name,''),coalesce(last_name,'')) FROM ( SELECT 'raju' as FIRST_NAME ,'pydi' as LAST_NAME ) AS T;
我仍然認為儲存 full_name 是一個非常糟糕的主意。您可以創建如下視圖:
CREATE VIEW TEST_VIEW AS ( SELECT first_name, last_name , CONCAT(coalesce(first_name,''),coalesce(last_name,'')) as full_name FROM test_table );
您可以在您的語句
firstname
中指定列。正如MySQL文件所說:last_name``INSERT
INSERT
表達式 expr 可以引用之前在值列表中設置的任何列。例如,您可以這樣做,因為 col2 的值引用了之前已分配的 col1:
INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
但是下面是不合法的,因為 col1 的值是指 col2,它是在 col1 之後賦值的:
INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);
例子:
mysql> INSERT INTO `test`.`new_table` -> (`first`,`last`,`full`) -> VALUES -> ('oNare','Antigua',CONCAT(first,' ',last)); Query OK, 1 row affected (0.01 sec) mysql> SELECT * FROM test.new_table; +-------+---------+---------------+ | first | last | full | +-------+---------+---------------+ | oNare | Antigua | oNare Antigua | +-------+---------+---------------+ 1 row in set (0.00 sec) mysql>