Mysql

在mysql中插入查詢

  • July 14, 2015

我正在使用 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> 

引用自:https://dba.stackexchange.com/questions/106875