Как запустить множественный запрос выбора из одной таблицы с ограничением 0, 1 и объединить все результаты

Мне нужно запросить данные из той же таблицы с другим условием.

Как показано ниже в запросе, мне нужно выполнить 2 запроса на выборку из одной и той же таблицы, а затем объединить результат в один.

SELECT Username, AddTime
FROM Table1
WHERE Type = 3 AND AddTime> = "2019-07-11 13:30:00" AND Username = "Test1"
LIMIT 0, 1

SELECT Username, AddTime
FROM Table1
WHERE Type = 3 AND AddTime> = "2019-07-11 13:40:00" AND Username = "Test2"
LIMIT 0, 1

мне нужно объединить результат обоих запросов в один результат. так что в основном, если у меня есть, скажем, 5 таких запросов, мне нужно получить результат, количество строк которого будет равно 5.

я также мог бы использовать цикл и каждый раз запрашивать оператор, но для этого нужно будет создать много соединений sql. возможно ли добиться этого в одном соединении с БД?

Обратите внимание, что LIMIT без ORDER BY не имеет смысла.

Strawberry 11.07.2019 08:41
Освоение архитектуры микросервисов с 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
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
783
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Здесь вы можете использовать запрос на объединение:

(SELECT Username, AddTime
 FROM Table1
 WHERE Type = 3 AND AddTime >= '2019-07-11 13:30:00' AND Username = 'Test1'
 LIMIT 1)
UNION ALL
(SELECT Username, AddTime
 FROM Table1
 WHERE Type = 3 AND AddTime >= '2019-07-11 13:40:00' AND Username = 'Test2'
 LIMIT 1);

Если вы используете MySQL 8+, также может быть способ использовать один запрос с ROW_NUMBER.

Раньше я пытался использовать UNION ALL, но получил ошибку. Я не писал это внутри (), а также я установил LIMIT 0, 1, чтобы вы работали именно так, как я хотел. Спасибо :)

Amar Ratna Shakya 11.07.2019 09:03

вы пытаетесь получить две строки с одинаковым условием для разных имен пользователей, поэтому вы можете использовать IN

SELECT Username, AddTime
FROM Table1
WHERE Type = 3 AND AddTime> = "2019-07-11 13:40:00" AND Username IN ("Test1","Test2");

нет, я не могу использовать IN, потому что для каждого имени пользователя мне нужно иметь разное AddTime (имя пользователя = test1 Addtime = AddTime1) (Username = test2 Addtime = Addtime2)

Amar Ratna Shakya 11.07.2019 08:59

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