Я нахожу другое решение:
<input type="text" class="disabled" name="test" value="test" />
Класс «отключен» immitate отключенный элемент по непрозрачности:
<style type="text/css">
input.disabled {
opacity: 0.5;
}
</style>
И затем отмените событие, если элемент отключен, и удалить класс :
$(document).on('click','input.disabled',function(event) {
event.preventDefault();
$(this).removeClass('disabled');
});
Из документации :
Чтобы соответствовать стандарту
SQL
,IN
возвращаетNULL
не только если выражение на левая сторона -NULL
, но также если совпадение не найдено в списке, а одно из выражений в списке -NULL
.
Это как раз ваш случай.
И IN
, и NOT IN
возвращают NULL
, что не является приемлемым условием для пункта WHERE
.
Перепишите ваш запрос следующим образом:
SELECT *
FROM match m
WHERE NOT EXISTS
(
SELECT 1
FROM email e
WHERE e.id = m.id
)
... или если вы действительно хотите использовать NOT IN
, вы можете использовать
SELECT * FROM match WHERE id NOT IN ( SELECT id FROM email WHERE id IS NOT NULL)
Я немного не в курсе подробностей того, как MySQL работает с нулями, но вот две вещи, которые нужно попробовать:
SELECT * FROM match WHERE id NOT IN
( SELECT id FROM email WHERE id IS NOT NULL) ;
SELECT
m.*
FROM
match m
LEFT OUTER JOIN email e ON
m.id = e.id
AND e.id IS NOT NULL
WHERE
e.id IS NULL
Второй запрос выглядит противоречащим интуитивно, но он выполняет условие соединения. а затем условие где. Это тот случай, когда объединения и предложения не эквивалентны.
Вот некоторый SQL, который на самом деле имеет смысл:
SELECT m.id FROM match m LEFT JOIN email e ON e.id = m.id WHERE e.id IS NULL
Простой всегда лучше.