MySQL Insert Where query

前端 未结 27 2392
悲&欢浪女
悲&欢浪女 2020-11-22 06:16

What\'s wrong with this query:

INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;

It works without the WHE

27条回答
  •  忘掉有多难
    2020-11-22 06:58

    Insert query doesn't support where keyword*

    Conditions apply because you can use where condition for sub-select statements. You can perform complicated inserts using sub-selects.

    For example:

    INSERT INTO suppliers
    (supplier_id, supplier_name)
    SELECT account_no, name
    FROM customers
    WHERE city = 'Newark';
    

    By placing a "select" in the insert statement, you can perform multiples inserts quickly.

    With this type of insert, you may wish to check for the number of rows being inserted. You can determine the number of rows that will be inserted by running the following SQL statement before performing the insert.

    SELECT count(*)
    FROM customers
    WHERE city = 'Newark';
    

    You can make sure that you do not insert duplicate information by using the EXISTS condition.

    For example, if you had a table named clients with a primary key of client_id, you could use the following statement:

    INSERT INTO clients
    (client_id, client_name, client_type)
    SELECT supplier_id, supplier_name, 'advertising'
    FROM suppliers
    WHERE not exists (select * from clients
    where clients.client_id = suppliers.supplier_id);
    

    This statement inserts multiple records with a subselect.

    If you wanted to insert a single record, you could use the following statement:

    INSERT INTO clients
    (client_id, client_name, client_type)
    SELECT 10345, 'IBM', 'advertising'
    FROM dual
    WHERE not exists (select * from clients
    where clients.client_id = 10345);
    

    The use of the dual table allows you to enter your values in a select statement, even though the values are not currently stored in a table.

    See also How to insert with where clause

提交回复
热议问题