SQL Обновить запрос с несколькими условиями - PullRequest
0 голосов
/ 25 мая 2020

Я хочу попросить помощи по моему запросу. Я не понимаю, как это сделать.

У меня есть таблица, где у меня есть предметы (из игры), и мне нужно изменить их столбец displayid в соответствии со значением из другого элемента

Когда я запускаю этот запрос у меня есть эти элементы

SELECT displayid, name, class, subclass, allowablerace, allowableclass, inventorytype FROM item_template WHERE name LIKE '%S1%';

Я получу результат - обратите внимание, что это eq, где имя содержит S1

 displayid name                                 class subclass allowablerace allowableclass inventorytype
 39296 Druid S1 Balance Staff                    2       10            -1             -1            17
 39296 Druid S1 Resto Staff                      2       10            -1             -1            17
 31864 Shaman S1 Ele Dagger                      2       15            -1             -1            13
 42376 Shaman S1 Shield                          4        6            -1             -1            14
 31864 Shaman S1 Resto Dagger                    2       15            -1             -1            13
 38679 Warrior S1 Thrown                         2       16            -1             -1            25

- это возвращаемые элементы с именем, содержащим смертоносные

SELECT displayid, name, class, subclass, allowablerace, allowableclass, inventorytype FROM item_template WHERE name LIKE '%Deadly%';

 displayid  name                                         class  subclass  allowablerace  allowableclass  inventorytype 
 55817  Deadly Gladiator's Dreadplate Chestpiece         4         4          32767              32              5 
 55816  Deadly Gladiator's Scaled Chestpiece             4         4          32767               2              5 
 55811  Deadly Gladiator's Plate Chestpiece              4         4          32767               1              5 
 55812  Deadly Gladiator's Plate Gauntlets               4         4     2147483647               1             10 

Мой вопрос в том, как сделать так, чтобы DisplayID смертоносного предмета был установлен для предметов S1, где условия мяса такие же, как класс, подкласс, допустимая раса, допустимый класс, тип инвентаря

Я пробовал это, но это не так работа

UPDATE item_template SET displayid = (SELECT displayID FROM item_template c) WHERE inventorytype = c.inventorytype AND class = c.class AND subclass = c.subclass AND allowableclass = c.allowableclass AND name LIKE '%S1%' AND c.name LIKE '%Deadly%';

Извините за плохой англи sh

1 Ответ

2 голосов
/ 25 мая 2020

Похоже, что вы хотите, чтобы само соединение обновлялось:

UPDATE item_template it1
INNER JOIN item_template it2
    ON it1.inventorytype = it2.inventorytype AND
       it1.class = it2.class AND
       it1.subclass = it2.subclass AND
       it1.allowableclass = it2.allowableclass
SET
    it1.displayid = it2.displayid
WHERE
    it1.name LIKE '%S1%' AND
    it2.name LIKE '%Deadly%';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...