2

UPDATE したい行が 2 つあり、列はmeta_keymeta_valueです。にはmeta_key、フィルタリングしたい 2 つの行があります。それはfirst_namelast_nameです。を更新したいのですが、とmeta_valueでフィルタリングされています。私のクエリは次のようなものです:first_namelast_name

UPDATE 
  `wp_usermeta` 
SET 
  (`meta_value` = 'First Name' WHERE `meta_key` = 'first_name'), 
  (`meta_value` = 'Last Name' WHERE `meta_key` = 'last_name') 
WHERE `user_id` = (SELECT `user_id` FROM (SELECT MAX(`user_id`) AS `user_id`
FROM `wp_usermeta`) AS `reg`)

助けてください..よろしくお願いします!

4

2 に答える 2

1

1 レベルの副選択だけが必要でした。

UPDATE `wp_usermeta`
   SET `meta_value` = IF(`meta_key` = 'first_name', 'First Name',
                      IF(`meta_key` = 'last_name', 'Last Name',
                         `meta_value`))
 WHERE `user_id` = (SELECT MAX(`user_id`) FROM `wp_usermeta`)
   AND (`meta_key` = 'first_name' OR `meta_key` = 'last_name')

または、ほとんどの人が行うように、2 つの個別のクエリを使用することもできます。

UPDATE `wp_usermeta`
   SET `meta_value` = 'First Name'
 WHERE `user_id` = (SELECT MAX(`user_id`) FROM `wp_usermeta`)
   AND `meta_key` = 'first_name';
UPDATE `wp_usermeta`
   SET `meta_value` = 'Last Name'
 WHERE `user_id` = (SELECT MAX(`user_id`) FROM `wp_usermeta`)
   AND `meta_key` = 'last_name';
于 2012-09-25T02:28:18.077 に答える
1

この調子で更新しませんか

UPDATE `wp_usermeta` 
SET `meta_value` = 'First Name' 
WHERE `meta_key` = 'first_name' 
  AND `user_id` = (SELECT `user_id` FROM (SELECT MAX(`user_id`) AS `user_id` FROM `wp_usermeta`) AS `reg`)

UPDATE `wp_usermeta` 
SET `meta_value` = 'Last Name'
WHERE `meta_key` = 'last_name'
  AND `user_id` = (SELECT `user_id` FROM (SELECT MAX(`user_id`) AS `user_id` FROM `wp_usermeta`) AS `reg`)
于 2012-09-25T02:28:37.897 に答える