Мне нужно запросить данные из той же таблицы с другим условием.
Как показано ниже в запросе, мне нужно выполнить 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. возможно ли добиться этого в одном соединении с БД?






Здесь вы можете использовать запрос на объединение:
(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, чтобы вы работали именно так, как я хотел. Спасибо :)
вы пытаетесь получить две строки с одинаковым условием для разных имен пользователей, поэтому вы можете использовать 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)
Обратите внимание, что LIMIT без ORDER BY не имеет смысла.