Если значение внутри NOT IN пустое, mysql выдает ошибку

Если m.message_type_id IN () пусто, это дает мне ошибку, которая говорит

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ) UNION ( ' at line 16

SELECT m.id,m.log,message,images,videos,uo.user_id as to_id,owner_id,
IF(m.owner_id = 45,'sent','received') as type
FROM messages as m
LEFT JOIN events as e ON m.message_type_id = e.id
LEFT JOIN user_organization as uo ON uo.id = e.org_id
WHERE m.message_type_id IN ()
AND m.type = 'event_invite_request_msg'

и если ГДЕ m.message_type_id IN (61), это дает мне правильный ответ.

Каково решение?

0

Решение

IN Предложение ожидает, что вы отправите хотя бы одно значение, почему вы ожидаете, что оно будет работать даже с пустым параметром?

expr NOT IN (значение, …)

Синтаксис

На более широком уровне это имеет место почти со всеми сравнениями, почему вы ожидаете, что сравнение не приведет к ошибке, если есть недопустимое значение для сравнения с

Будет ли это работать для вас?

SELECT myField FROM myTable WHERE MyField2 =

Нет, это не будет

1

Другие решения

Вы должны будете использовать условие для этого

if(count($friendsArray[])){
$qry = "SELECT m.id,m.log,message,images,videos,uo.user_id as to_id,owner_id,
IF(m.owner_id = 45,'sent','received') as type
FROM messages as m
LEFT JOIN events as e ON m.message_type_id = e.id
LEFT JOIN user_organization as uo ON uo.id = e.org_id
WHERE m.message_type_id IN ($ids)
AND m.type = 'event_invite_request_msg'";
}else{
$qry = "SELECT m.id,m.log,message,images,videos,uo.user_id as to_id,owner_id,
IF(m.owner_id = 45,'sent','received') as type
FROM messages as m
LEFT JOIN events as e ON m.message_type_id = e.id
LEFT JOIN user_organization as uo ON uo.id = e.org_id
WHERE m.type = 'event_invite_request_msg'";
}
0

По вопросам рекламы [email protected]