Ограничения LIKE

373
23 ноября 2021, 10:10

Нужно найти в таблице object_data все объекты которые ставились игроками, по личному ID в столбце Worldspace

При этом список нужных игроков формируется по внутреннему запросу

Рабочий код в фантазиях автора:

SELECT * FROM `object_data` WHERE `Worldspace` LIKE 
(
SELECT
CONCAT('%',PlayerUID,'%')  
AS PlayerUID
FROM character_data
WHERE LastLogin < DATE_SUB(NOW() , INTERVAL 31 DAY)
AND Alive = 1
)

Проблема состоит в том что LIKE не принимает более одного результата в переменной. Как возможно обойти данное ограничение?

Написал такой запрос:

SELECT * FROM
( 
SELECT 
CONCAT('%',PlayerUID,'%')
AS PlayerUID
FROM character_data 
WHERE LastLogin < DATE_SUB(NOW() , INTERVAL 31 DAY) 
AND Alive = 1 
) AS t2,
(
SELECT * FROM object_data
) AS t1
WHERE t1.Worldspace LIKE t2.PlayerUID

Работает корректно. Но при смене SELECT * FROM на DELETE FROM, таблица материться на вложенный запрос и показывает полное разнообразие ошибок при попытках заставить сию конструкцию работать.

Answer 1

Думаю, должно работать как-то так:

select od.*
from object_data od
inner join character_data cd on od.Worldspace like CONCAT('%', cd.PlayerUID, '%')
where cd.LastLogin < DATE_SUB(NOW(), INTERVAL 31 DAY) and cd.Alive = 1
READ ALSO
Вернуть Id дубликата, если он существует mysql

Вернуть Id дубликата, если он существует mysql

Всем доброго вечераЕсть 3 связанные таблицы, примерная схемка на фото

118
Как в таблице переназначить все id

Как в таблице переназначить все id

Есть таблица post, как мне в этой таблице переназначить все id к записям, но что бы новые Id начинались с нужного числа, например с 1221 и далее по возростанию

188
Многотабличный запрос MYSQL

Многотабличный запрос MYSQL

Есть 4 таблицы, мне нужно выбрать всех пользователей(users) со всеми воронками(funnels) которые у них естьТо есть у одного юзера есть несколько воронок

92