Эмулированные SQL-запросы

Допустим, у меня есть произвольный запрос MySQL с именем query1, который выполняется для таблицы table1 и генерирует подмножество строк этой таблицы. С функциональной точки зрения этот запрос просто выдает логическое значение для каждой строки, где, если логическое значение равно true, строка возвращается в результатах, а если это false, то нет (или наоборот, w.l.o.g.).

Допустим также, что я беру большой двоичный объект JSON, анализирую его в строку и добавляю строку в table1 каждую минуту. Я хочу проверить и посмотреть, возвращает ли query1true или false строку сразу после ее добавления.

Есть ли способ выполнить этот тест, фактически не добавляя строку где-нибудь в базу данных, а затем проверяя, возвращается ли строка запросом? Моя интуиция такова, что должна быть возможность «эмулировать» запрос к новым данным, фактически никуда не добавляя их, но я не знаю, как это сделать (если это вообще возможно).

вы могли бы использовать EXISTS()

wildplasser 21.12.2020 22:02
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
1
177
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать SQL для оценки выражений, не касаясь какой-либо таблицы.

Пример:

mysql> set @age = 29;

mysql> set @state = 'CA';

mysql> select @age > 30 and @state = 'CA';
+-----------------------------+
| @age > 30 and @state = 'CA' |
+-----------------------------+
|                           0 |
+-----------------------------+

Этот пример возвращает 0 (ложь), потому что переменная @age не больше 30.

Вы, безусловно, можете использовать значения, извлеченные из ваших данных JSON (или любого другого источника), в качестве терминов в выражении SQL, подобном этому.

Не обязательно использовать пользовательские переменные, как показано в моем примере выше. Вы также можете просто использовать буквальные значения. Я только что показал использование переменных, потому что может быть проще проверить условия вашего запроса, если вы используете имена переменных, которые соответствуют именам ваших столбцов.

Ответ принят как подходящий

Вы можете использовать производную таблицу. Например.:

select max(id) from (select 1 id, 'test' name from dual) as t;

В приведенном выше примере 1 и «тест» представляют строку, которую вам нужно будет эмулировать, присутствуя в таблице, а select max(id) from t представляет запрос1.

Есть ли в MySQL такая же двойная таблица, как в Oracle?

jarlh 21.12.2020 22:42

@jarlh да. Это не требуется, если таблицы не являются ссылками. select 1 id, 'test' тоже сработает.

lainatnavi 21.12.2020 22:45

Другие вопросы по теме