removeEventListener
удаляет слушателя, что точно соответствует функции, которая была добавлена.
В этом случае функция, которая addEventListener
:
var some_func = function (ev) {self.onInputMove (ev); };
Сохраните ссылку на фактическую функцию, и вы будете хороши. Так, например, должно работать следующее:
someDom.addEventListener ('mousemove', self.onInputMove, false); someDom.removeEventListener ( 'MouseMove', self.onInputMove, ложь);
Вы можете использовать только псевдонимы столбцов в предложениях GROUP BY, ORDER BY или HAVING.
Стандартный SQL не позволяет ссылаться на псевдоним столбца в предложении WHERE. Это ограничение наложено, потому что, когда выполняется код WHERE, значение столбца еще не может быть определено.
blockquote>Скопировано из Документация MySQL
Как указано в комментариях, использование HAVING вместо этого может выполнить эту работу. Обязательно прочитайте это WHERE vs HAVING .
Возможно, мой ответ слишком поздний, но это может помочь другим.
Вы можете заключить его в другой оператор select и использовать в нем предложение where.
SELECT * FROM (Select col1, col2,...) as t WHERE t.calcAlias > 0
calcAlias - это столбец псевдонимов, который был рассчитан.
Вы можете использовать предложение HAVING для фильтра, рассчитанного в полях SELECT и псевдонимах
WHERE
и HAVING
. Они не идентичны. stackoverflow.com/search?q=where+vs+having
– rinogo
22 June 2017 в 21:05
Стандартный SQL (или MySQL) не позволяет использовать псевдонимы столбцов в предложении WHERE, потому что
при вычислении предложения WHERE значение столбца может еще не определено.
blockquote>(из документации MySQL ). Вы можете вычислить значение столбца в предложении WHERE , сохранить значение в переменной и использовать его в списке полей. Например, вы можете сделать это:
SELECT `users`.`first_name`, `users`.`last_name`, `users`.`email`, @postcode AS `guaranteed_postcode` FROM `users` LEFT OUTER JOIN `locations` ON `users`.`id` = `locations`.`user_id` WHERE (@postcode := SUBSTRING(`locations`.`raw`,-6,4)) NOT IN ( SELECT `postcode` FROM `postcodes` WHERE `region` IN ( 'australia' ) )
Это позволяет избежать повторения выражения, когда оно усложняется, что упрощает его работу.
select @code:=sum(2), 2*@code
работает в MySQL 5.5, но для меня в 5.6 второй столбец дает NULL при первом вызове и возвращает 2 раза предыдущий результат i> при повторном запуске. Интересно, что оба варианта @code:=2, 2*@code
и select @code:=rand(), 2*@code
действительно работают в моем 5.6 (сегодня). Но они действительно записывают и читают в предложении SELECT; в вашем случае вы устанавливаете его в ГДЕ.
– Arjan
21 November 2014 в 08:59
Я использую mysql 5.5.24, и работает следующий код:
select * from (
SELECT `users`.`first_name`, `users`.`last_name`, `users`.`email`,
SUBSTRING(`locations`.`raw`,-6,4) AS `guaranteed_postcode`
FROM `users` LEFT OUTER JOIN `locations`
ON `users`.`id` = `locations`.`user_id`
) as a
WHERE guaranteed_postcode NOT IN --this is where the fake col is being used
(
SELECT `postcode` FROM `postcodes` WHERE `region` IN
(
'australia'
)
)
Стандартный SQL запрещает ссылки на псевдонимы столбцов в предложении WHERE. Это ограничение наложено, потому что, когда вычисляется предложение WHERE, значение столбца может еще не определено. Например, следующий запрос является незаконным:
SELECT id, COUNT (*) AS cnt FROM tbl_name WHERE cnt> 0 GROUP BY id;
Как отметил Виктор, проблема связана с псевдонимом. Этого можно избежать, поставив выражение непосредственно в предложение WHERE x IN y:
SELECT `users`.`first_name`,`users`.`last_name`,`users`.`email`,SUBSTRING(`locations`.`raw`,-6,4) AS `guaranteed_postcode`
FROM `users` LEFT OUTER JOIN `locations`
ON `users`.`id` = `locations`.`user_id`
WHERE SUBSTRING(`locations`.`raw`,-6,4) NOT IN #this is where the fake col is being used
(
SELECT `postcode` FROM `postcodes` WHERE `region` IN
(
'australia'
)
)
Однако, я думаю, это очень неэффективно, так как подзапрос должен выполняться для каждой строки внешний запрос.
Вы можете использовать SUBSTRING (locations
. raw
, - 6,4), где условие
SELECT `users`.`first_name`, `users`.`last_name`, `users`.`email`,
SUBSTRING(`locations`.`raw`,-6,4) AS `guaranteed_postcode`
FROM `users` LEFT OUTER JOIN `locations`
ON `users`.`id` = `locations`.`user_id`
WHERE SUBSTRING(`locations`.`raw`,-6,4) NOT IN #this is where the fake col is being used
(
SELECT `postcode` FROM `postcodes` WHERE `region` IN
(
'australia'
)
)
HAVING
выполняется медленнее, чемWHERE
– DTs 25 April 2014 в 09:38