我有两个包含大量行的表,我需要为第一行(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在where子句(#1054)
中是未知的您是否知道如何在where子句中传递table_1.id?或者其他方式来实现我的目标?
感谢您帮助我!
答案 0 :(得分:2)
问题是因为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))