MySQL CAS de mise à jour de plusieurs colonnes

Je voudrais mettre à jour plusieurs colonnes dans ma table à l'aide d'une instruction du cas, mais je ne trouve pas comment faire (est-ce même possible). Je suis venu avec les suivants en référence non valide requête:

UPDATE tablename SET
    CASE name
        WHEN 'name1' THEN col1=5,col2=''
        WHEN 'name2' THEN col1=3,col2='whatever'
        ELSE col1=0,col2=''
    END;

Est-il possible d'atteindre le résultat attendu avec SQL valide?

  • Double Possible: stackoverflow.com/questions/8358642/...
  • Pas vraiment, c'est une instruction de mise à jour, pas d'en sélectionner un.
  • Double de stackoverflow.com/q/3432/1553851
  • Encore une fois, pas vraiment. C'est une instruction de mise à jour, pas un cache un.
  • Vous avez demandé s'il y avait de toute façon de réaliser la même chose en SQL valide. La réponse est oui, à l'aide d'une instruction insert. Notez que le lié question est également de savoir comment combiner les mises à jour.
  • Ce n'est pas la même chose si il insère des enregistrements au lieu de seulement la mise à jour des enregistrements existants. La accepté de répondre à la question liée est une insertion alors que j'ai été explicitement la recherche d'une mise à JOUR seule réponse. La question liée, en effet, veut aussi une mise à JOUR de réponse, mais a un INSERT réponse acceptée. Je ne sais pas pourquoi cela est arrivé, mais il ne serait pas répondre à cette question.
  • Parce qu'il n'a pas d'insérer des enregistrements si il y a des valeurs en double pour une clé unique. - Je le prendre il n'y a pas de clé unique sur name?
  • Il n'y a pas, et je ne connaissais pas l'Id à l'avance.

InformationsquelleAutor Villermen | 2012-12-02