No index used in query/prepared statement ...
что это означает?
без неё обойтись нельзя, т.к. одинаковые ники будут вызывать ошибки в некоторых уголках сайта
что делать?
нужно что бы посты из бд отображались только пользователям определенной группы.
FROM post
JOIN user ON user_id = {текущий пользователь} AND FIND_IN_SET(post.group_id, user.group_ids_csv)
ID username group
1 admin 1,2,3
Затупил.. Нашел вариант..
UPDATE request
JOIN ( SELECT MAX(id) id
FROM request
WHERE user_id IN ( '97' /* список */ )
) subquery USING ( id )
SET request.message = 'text';
SELECT *
FROM table
ORDER BY user_id = @user_id DESC, id DESC LIMIT 1
SELECT *
FROM table
ORDER BY user_id IS NULL, id DESC LIMIT 1
CREATE TRIGGER tr_assign_apikey_to_user
AFTER INSERT
ON users
FOR EACH ROW
UPDATE users_apikey SET username = NEW.username WHERE username = '' LIMIT 1;
Информация о том, что пользователь оплатил подписку заносится в бд (есть отдельная строка, в которой изначальное значение равно нулю, а при оплате меняется на 1).
значение сменилось на 1, а потом через месяц само сменилось на 0.
фишка в том, что в бд порядок меняется, условно скажем, после того, как вытащишь из бд и превратишь обратно в массив, он уже принимает вот такой вид
'[{"a":1}, {"b":2}, {"c":3}]'
Я его превращаю в json (json_encode), и кладу в бд.
SELECT *
FROM `users`
WHERE FIND_IN_SET(id, ?);
1) Как безопаснее и правильней писать имя таблицы и базы с кавычками или без кавычек . Если с кавычками то с двойными или одинарными.
'
`
"
CREATE TABLE data (
data_id INT AUTO_INCREMENT PRIMARY KEY,
data_for_insertion VARCHAR(255) );
INSERT INTO data VALUES (1, 'Новое сообщение по расписанию', DEFAULT);
CREATE TABLE schedule (
schedule_id INT AUTO_INCREMENT PRIMARY KEY,
data_id INT,
FOREIGN KEY (data_id) REFERENCES data (data_id) ON DELETE CASCADE ON UPDATE CASCADE,
shedule_time TIME );
INSERT INTO schedule VALUES
(NULL, 1, '09:20'),
(NULL, 1, '09:40'),
(NULL, 1, '11:20'),
(NULL, 1, '11:40');
CREATE TABLE main (
main_id INT AUTO_INCREMENT PRIMARY KEY,
inserted_data VARCHAR(255),
created_as DATETIME DEFAULT CURRENT_TIMESTAMP );
CREATE EVENT schedule
ON SCHEDULE EVERY 1 MINUTE
DO
INSERT INTO main (inserted_data)
SELECT data.data_for_insertion
FROM data
JOIN schedule USING (data_id)
WHERE schedule_time > CURRENT_TIME - INTERVAL 1 MINUTE
AND schedule_time <= CURRENT_TIME;
WITH RECURSIVE
cte AS ( SELECT *, 1 level
FROM category
WHERE id = $category_id
UNION ALL
SELECT cat.*, cte.level + 1
FROM category cat
JOIN cte ON cat.id = cte.parent_id )
SELECT *
FROM cte
ORDER BY level;
SELECT CONCAT_WS('=>', c1.id, c2.id, c3.id, c4.id, c5.id) path
FROM category c1
LEFT JOIN category c2 ON c1.parent_id = c2.id
LEFT JOIN category c3 ON c2.parent_id = c3.id
LEFT JOIN category c4 ON c3.parent_id = c4.id
LEFT JOIN category c5 ON c4.parent_id = c5.id
WHERE c1.id = $category_id
[[:<:]], [[:>:]]
These markers stand for word boundaries.
The Spencer library supports word-beginning and word-end boundary markers ([[:<:]] and [[:>:]] notation). ICU does not. For ICU, you can use \b to match word boundaries; double the backslash because MySQL interprets it as the escape character within strings.