У меня две таблицы с большим количеством строк, и мне нужно поддерживать «индексную» информацию для каждой строки в первом (table_1). Поэтому я написал запрос, чтобы не использовать напрямую COUNT () [медленный, медленный, медленный]. Поэтому я стараюсь:
UPDATE table_1 SET table_1.column_3 = ( SELECT COUNT (*) FROM ( SELECT DISTINCT column_5 FROM table_2 WHERE table_2.id_t1 = table_1.id LIMIT 300 ) t )
Но MySQL отвечает мне, что table_1.id не знает, где clause (# 1054)
Знаете ли вы, как передавать table_1.id в предложение where? Или другим способом получить мою цель?
Спасибо за помощь мне !
проблема в том, что table_1 слишком далеко от внутреннего запроса, используйте:
UPDATE table_1 SET table_1.column_3 = (SELECT count(DISTINCT column_5) FROM table_2 WHERE table_2.id_t1 = table_1.id);
как я вижу, вы используете LIMIT, не совсем уверены, что вам это нужно, так или иначе, вы можете подражать этому:
IF(count(distinct column_5)>300, 300, count(distinct column_5))