MySQL Insert Where query

前端 未结 27 1805
悲&欢浪女
悲&欢浪女 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:44

    its totall wrong. INSERT QUERY does not have a WHERE clause, Only UPDATE QUERY has it. If you want to add data Where id = 1 then your Query will be

    UPDATE Users SET weight=160, desiredWeight= 145 WHERE id = 1;
    
    0 讨论(0)
  • 2020-11-22 06:48

    I think that the correct form to insert a value on a specify row is:

    UPDATE table SET column = value WHERE columnid = 1
    

    it works, and is similar if you write on Microsoft SQL Server

    INSERT INTO table(column) VALUES (130) WHERE id = 1;
    

    on mysql you have to Update the table.

    0 讨论(0)
  • 2020-11-22 06:49

    DO READ THIS AS WELL

    It doesn't make sense... even literally

    INSERT means add a new row and when you say WHERE you define which row are you talking about in the SQL.

    So adding a new row is not possible with a condition on an existing row.

    You have to choose from the following:

    A. Use UPDATE instead of INSERT

    B. Use INSERT and remove WHERE clause ( I am just saying it...) or if you are real bound to use INSERT and WHERE in a single statement it can be done only via INSERT..SELECT clause...

    INSERT INTO Users( weight, desiredWeight ) 
    SELECT FROM Users WHERE id = 1;
    

    But this serves an entirely different purpose and if you have defined id as Primary Key this insert will be failure, otherwise a new row will be inserted with id = 1.

    0 讨论(0)
  • 2020-11-22 06:49

    You can't use INSERT and WHERE together. You can use UPDATE clause for add value to particular column in particular field like below code;

    UPDATE Users
    SET weight='160',desiredWeight ='145'  
    WHERE id =1
    
    0 讨论(0)
  • 2020-11-22 06:51

    The right answer to this question will be sth like this:

    a). IF want select before insert :

    INSERT INTO Users( weight, desiredWeight ) 
      select val1 , val2  from tableXShoulatNotBeUsers
      WHERE somecondition;
    

    b). IF record already exists use update instead of insert:

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

    Should be

    Update Users set weight=160, desiredWeight=145  WHERE id = 1;
    

    c). If you want to update or insert at the same time

    Replace Users set weight=160, desiredWeight=145  WHERE id = 1;
    
    Note):- you should provide values to all fields else missed field in query 
            will be set to null
    

    d). If you want to CLONE a record from SAME table, just remember you cann't select from table to which you are inserting therefore

     create temporary table xtable ( weight int(11), desiredWeight int(11) ;
    
     insert into xtable (weight, desiredWeight) 
        select weight, desiredWeight from Users where [condition]
    
     insert into Users (weight, desiredWeight) 
        select weight , desiredWeight from xtable;
    

    I think this pretty covers most of the scenarios

    0 讨论(0)
  • 2020-11-22 06:52

    It depends on the situation INSERT can actually have a where clause.

    For example if you are matching values from a form.

    Consider INSERT INTO Users(name,email,weight, desiredWeight) VALUES (fred,bb@yy.com,160,145) WHERE name != fred AND email != bb@yy.com
    

    Makes sense doesn't it?

    0 讨论(0)
提交回复
热议问题