Здравствуйте, есть две таблицы в СУБД MySQL:
user
+----+-------+----------+
| id | login | password |
+----+-------+----------+
| 1 | o1 | 123 |
+----+-------+----------+
session
+-------+--------+---------+---------------------+---------------------+
| token | active | user_id | create_time | update_time |
+-------+--------+---------+---------------------+---------------------+
| first | 1 | 1 | 2017-07-06 12:31:00 | 2017-07-06 12:31:00 |
+-------+--------+---------+---------------------+---------------------+
Нужно сделать следующее: если в user
есть строка где логин o1, то добавляем
запись в session
.
Делал примерно так, но не вышло:
if((select count(*) from user where login = 'o1')>0,
insert into session values ('first', 1, now(), now()),
select NULL from user);
Если user.login уникально, то
INSERT INTO session (token,active,user_id,create_time,update_time)
SELECT 'first', 1, user.id, now(), now()
FROM user
WHERE user.login = 'o1'
Если неуникально - ну добавить LIMIT 1 (а лучше - дополнительные условия отбора, чтобы выбралась ОДНА запись).
Только непонятно, зачем делать ручные присвоения полям create_time и update_time, когда есть автоматизированное DEFAULT и ON UPDATE...
Функция IF
может быть выполнена только из запроса/встроенной процедуры.
нужно сделать следующее: если в user есть строка где логин o1, то то добавляем запись в session... делал примерно так, но не вышло:
Вставки по условию можно добиться с помощью INSERT-SELECT-WHERE
. Например так:
insert into session
select 't2', 1, 1, now(), now()
from dual
where (select count(*) from user where login = 'o1') > 0;
Или так:
insert into session
select 't3', 1, 1, now(), now()
from dual
where exists (select 1 from user where login = 'o1');
Количество столбцов в приведенном вами запросе и в таблице sessions
не совпадает. Проверьте запрос еще раз, возможно потребуется выбор user_id
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Можно ли как то удалить значение выбранного столбца из строки MySQLДопустим есть таблица users и в нем поля id, username, regdate, image
Почему мне показывает следующую ошибку, хотя запрос правильный?