|
Как объявить переменную содержащую список ?
|
|||
---|---|---|---|
#18+
Всем привет. Подскажите пожалуйста. Можно ли и как объявить переменную, которая будет содержать список значений. Не вот так SET @q = 28361; А условно вот так SET @q IN (28361, 46272, 64848); Заранее большое спасибо ☀️ ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 21:14 |
|
Как объявить переменную содержащую список ?
|
|||
---|---|---|---|
#18+
Fatid, можно SET @user_var = "1,2,3,4,5" https://dev.mysql.com/doc/refman/8.0/en/user-variables.html ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 21:47 |
|
Как объявить переменную содержащую список ?
|
|||
---|---|---|---|
#18+
Основной вопрос - зачем, с какой целью. В зависимости от того, как потом этот список использовать, могут быть разные решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 11:43 |
|
Как объявить переменную содержащую список ?
|
|||
---|---|---|---|
#18+
Akina, объясняю. У меня есть в бд пользователи веб ресурса, каждый пользователь имеет емеил. И вот иногда есть задачки отключить им рассылку с веб.ресурса. Иногда сразу несколько задач по разным причинам и чтобы сделать в одном запросе я хочу объявить в переменную сразу несколько почт. Типо SET @h IN ('makarov@mail.ru', 'gaynova@mail.ru', 'ivanov@gmail.com') UPDATE база данных.таблица SET email = 0 WHERE email = @h Иногда бывают номера id скажем, И я объявляю переменную SET @y = 57392 И соответственно условие WHERE id = #y Только что в том, что в данном примере хотелось бы сразу в одну переменную объявить несколько почт или несколько айди и уже к ним (к каждому полю таблице) применить запрос апдейта. Надеюсь понятно объяснил, если-что объясню ещё более точнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 16:04 |
|
Как объявить переменную содержащую список ?
|
|||
---|---|---|---|
#18+
Fatid, Насколько мне известно, такого нет в MySql, но есть другое решение Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 17:50 |
|
Как объявить переменную содержащую список ?
|
|||
---|---|---|---|
#18+
при работе со строками сотня рабочих вариантов, если не сотня, то десяток точно. Как вариант LOCATE Код: sql 1. 2.
в данном случае не говорим о скорости выполнения запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 18:01 |
|
Как объявить переменную содержащую список ?
|
|||
---|---|---|---|
#18+
Alex_Ustinov, Вот точно не стоит использовать LOCATE напрямую. Пример, нужно найти адрес 'rov@gmail.com' из 'makarov@gmail.com, gaynovarov@gmail.com, testrov@gmail.com' такого адреса нет в списке, но при использовании LOCATE совпадения будут по всем трем адресам. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 18:09 |
|
Как объявить переменную содержащую список ?
|
|||
---|---|---|---|
#18+
SergiiW, да, согласен ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 18:15 |
|
Как объявить переменную содержащую список ?
|
|||
---|---|---|---|
#18+
Alex_Ustinov в данном случае не говорим о скорости выполнения запроса Подтверждаю, при использование LOCATE или FIND_IN_SET будет полный скан таблицы. Никаких индексов. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 18:19 |
|
Как объявить переменную содержащую список ?
|
|||
---|---|---|---|
#18+
Fatid И вот иногда есть задачки отключить им рассылку с веб.ресурса. Иногда сразу несколько задач по разным причинам и чтобы сделать в одном запросе я хочу объявить в переменную сразу несколько почт. Так что либо дополнительное поле в таблице пользователей, либо отдельная таблица блокирования аккаунтов либо отдельных функций. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 20:42 |
|
Как объявить переменную содержащую список ?
|
|||
---|---|---|---|
#18+
Может, сморожу глупость, ибо опыт в мускуле чуть больше, чем 0:) А почему не писать этот список во временную таблицу и привязывать к ней запрос. Скорость выполнения, полагаю, будет намного выше всяких locate, find, like и проч., т.к. как все нужные индексы на рабочих таблицах будут задействованы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 23:00 |
|
Как объявить переменную содержащую список ?
|
|||
---|---|---|---|
#18+
Fatid Akina, объясняю. У меня есть в бд пользователи веб ресурса, каждый пользователь имеет емеил. И вот иногда есть задачки отключить им рассылку с веб.ресурса. Иногда сразу несколько задач по разным причинам и чтобы сделать в одном запросе я хочу объявить в переменную сразу несколько почт. Типо SET @h IN ('makarov@mail.ru', 'gaynova@mail.ru', 'ivanov@gmail.com') UPDATE база данных.таблица SET email = 0 WHERE email = @h Ну, прямо так и пиши: Код: sql 1.
Естественно, сам список адресов формируешь в виде строки с запятой в качестве разделителя. После формируешь строку запроса и выполняешь его: Код: php 1. 2.
Аналогично делаешь и для списка ид пользователей. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 23:51 |
|
Как объявить переменную содержащую список ?
|
|||
---|---|---|---|
#18+
OlegROA, Было бы всё так просто я бы на форуме не регистрировалися )) там переменная используется чтобы сразу в нескольких запросах использовать. Там в одном запросе несколько раз данных даже может быть. Это аля цикл окольными путями ибо создать процедуру права не позволяют. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2022, 15:06 |
|
|
start [/forum/topic.php?fid=47&gotonew=1&tid=1827785]: |
0ms |
get settings: |
18ms |
get forum list: |
8ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
37ms |
get topic data: |
4ms |
get first new msg: |
2ms |
get forum data: |
0ms |
get page messages: |
297ms |
get tp. blocked users: |
0ms |
others: | 2877ms |
total: | 3245ms |
0 / 0 |