Знак неравно в MySql

Статус
В этой теме нельзя размещать новые ответы.

golos81

Новичок
Знак неравно в MySql

Не получается выбрать записи, неравные условию.

PHP:
$query = "SELECT `Id` FROM `messages` WHERE `Read` <> 1";
$result = mysql_query($query);
if (!mysql_error()){
	while ($row = mysql_fetch_array($result)) {
		echo "<br>q".$row['Id'];
	}
}
else echo mysql_error();
Пробовал <>, !=, NOT LIKE. Ни ошибок, ни результата, ничего не выводится.

Подскажите, что не так?

Пишу '=' - работает, пишу неравно с другими полями - работает. А именно с этим полем и неравно - не работает:(((
 

Фанат

oncle terrible
Команда форума
if (!mysql_error()) - это ты сам придумал, или кто-то очень умный тебе подсказал?

а знак "не равно" в mysql именно <>
пэтому разбирайся со свими данными.
и, в общем, ищи косяки в своем коде/ситуации.
 

golos81

Новичок
Автор оригинала: *****
if (!mysql_error()) - это ты сам придумал, или кто-то очень умный тебе подсказал?

а знак "не равно" в mysql именно <>
пэтому разбирайся со свими данными.
и, в общем, ищи косяки в своем коде/ситуации.
Со знаком - подсказали.

Выборка не происходит из-за того, что часть значений Read = NULL. Тогда вопрос: как выбрать значение = NULL. Пишу
PHP:
SELECT `Id` FROM `messages` WHERE `Read` = 'NULL'
не получается.


В принципе могу сделать default = 0 вместо NULL, тогда это решает мой вопрос. Но правильно ли это будет? Т.е. есть ли какая-то разница между default = 0 и default = NULL?
 

Фанат

oncle terrible
Команда форума
а зачем ты ищешь строку NULL?
у тебя это поле типа варчар что ли?

-~{}~ 13.08.07 16:59:

Со знаком - подсказали.
причем здесь знак?
я тебе не прознак писал, а про if (!mysql_error())
 

golos81

Новичок
Автор оригинала: *****
а зачем ты ищешь строку NULL?
у тебя это поле типа варчар что ли?
Нет - поле типа tinyint(1). Мне надо выбрать все поля, где !=1, то бишь =NULL.

-~{}~ 13.08.07 17:01:

Автор оригинала: *****

я тебе не прознак писал, а про if (!mysql_error())
Все равно подсказали, а что в этом криминального?

-~{}~ 13.08.07 17:03:

Всегда мучался вопросом, какой правильно тип поля указывать, если у меня в нем будет только два значения: либо 0, либо 1?

-~{}~ 13.08.07 17:07:

Кажется разобрался:
в моем случае надо использовать 0, а не NULL, и это будет правильно, а я думал наоборот...

А по поводу if (!mysql_error()), если можно, в чем здесь проблема?
 

Фанат

oncle terrible
Команда форума
нафига вызывать функцию, если проверять достаточно $result?
Кажется разобрался:
в моем случае надо использовать 0, а не NULL,
так ты можешь, наконец, определиться - что у тебя там лежит?
и зачем ты ищешь в поле tinyint(1) строку из 4 букв?
 

golos81

Новичок
Автор оригинала: *****
нафига вызывать функцию, если проверять достаточно $result?
Т.е. правильнее будет вот так:
PHP:
$query = "SELECT `Id` FROM `messages` WHERE messages.`Read` <> 1";
$result = mysql_query($query)
if ($result) {
	while ($row = mysql_fetch_array($result)) {
		echo "<br>q".$row['Id'];
	}
}
else echo mysql_error();
?

Автор оригинала: *****
так ты можешь, наконец, определиться - что у тебя там лежит?
С этим я и не путался - tinyint(1), т.е. либо 1, либо 0.
 

Trianon

Новичок
golos81
В SQL-языке троичная логика. Выражения логического типа могут являться истинными, ложными и неопределенными.
Выражение `ready` = 0 сработает лишь в том случае, когда ready определено и равно нулю.

Если хочется учитывать и случай неопределенного поля - нужно задавать это явно
(`ready` IS NULL OR `ready` = 0)
либо
COALESCE( `ready`, 0) = 0
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху