Как мне выполнить запрос mysql, чтобы найти случайный идентификатор с той же датой и идентификатором в том же результате?

#mysql #sql

Вопрос:

 CREATE TABLE log_tbl
(ID int, RandomID varchar(200), EstID int, Date date, Time time);

INSERT INTO `log_tbl` (`ID`, `RandomID`, `EstID`, `Date`, `Time`) VALUES
    (1,"TYS70POO7KW","3","2021-06-15","20:43:07"),
    (2,"KJD86DVZ6NL","1","2021-06-15"," 18:59:42"),
    (3,"ZOW10DVZ3AI","1","2022-06-12","12:17:26"),
    (4,"DZB06PSA6YS","1","2021-06-17","14:54:27"),
    (5,"PZA42IST5YD","3","2021-06-12","12:36:35"),
    (6,"JWM21TQS8LE","3","2021-06-12","05:53:44"),
    (7,"LIN78JFF5WG","2","2021-06-16","04:54:25"),
    (8,"OGY65YUH7IF","2","2021-06-12","18:57:13"),
    (9,"IZX04GUF5TJ","3","2021-06-12","15:35:27"),
    (10,"YEL10NDQ4OV","2","2021-06-15","10:43:00"),
    (11,"TYS70POO7KW","2","2021-06-17","20:43:07"),
    (12,"KJD86DVZ6NL","2","2021-06-17","18:59:42"),
    (13,"ZOW10DVZ3AI","3","2022-06-17","12:17:26"),
    (14,"DZB06PSA6YS","2","2021-06-16","14:54:27"),
    (15,"PZA42IST5YD","1","2021-06-12","12:36:35"),
    (16,"JWM21TQS8LE","2","2021-06-12","05:53:44"),
    (17,"LIN78JFF5WG","3","2021-06-13","04:54:25"),
    (18,"OGY65YUH7IF","3","2021-06-13","18:57:13"),
    (19,"IZX04GUF5TJ","1","2021-06-12","15:35:27"),
    (20,"YEL10NDQ4OV","1","2021-06-12","10:43:00"),
    (21,"TYS70POO7KW","1","2021-06-17","20:43:07"),
    (22,"KJD86DVZ6NL","2","2021-06-17","18:59:42"),
    (23,"ZOW10DVZ3AI","3","2022-06-17","12:17:26"),
    (24,"DZB06PSA6YS","2","2021-06-17","14:54:27"),
    (25,"PZA42IST5YD","2","2021-06-12","12:36:35"),
    (26,"JWM21TQS8LE","2","2021-06-12","05:53:44"),
    (27,"LIN78JFF5WG","3","2021-06-14","04:54:25"),
    (28,"OGY65YUH7IF","1","2021-06-14","18:57:13"),
    (29,"IZX04GUF5TJ","1","2021-06-14","15:35:27"),
    (30,"YEL10NDQ4OV","3","2021-06-16","10:43:00");
 

Из приведенной выше таблицы я хочу найти определенного пользователя( RandomID ) и показать всех других пользователей, у которых было то же EstID самое на ту же дату.
Мне также нужно сузить результат, показав только 2 часа до и после RandomID регистрации.

Ответ №1:

Вы можете использовать in с кортежами:

 select l.*
from log_tbl l
where (l.est_id, l.date) in (select l2.est_id, l2.date
                             from log_tbl l2
                             where l2.randomid = ?
                            );
 

Комментарии:

1. Который ? вы должны заменить на RandomID тот, который вам нужно найти. И какую версию MariaDB вы используете?

2. 10.4.19, но сейчас все в порядке. я перепутал синтаксис. но мне снова нужна помощь, чтобы сузить результат до 2 часов до и после, но все равно до той же даты,

3. Вы должны опубликовать новый вопрос @SplitStream. Этот вопрос уже считается решенным. С новым вопросом у вас будет больше шансов привлечь внимание.