![](/img/trans.png)
[英]SELECT * FROM table1 INNER JOIN table2 ON table1.id=table2.id WHERE clause
[英]Mysql — UPDATE table SET column = SELECT COUNT(*) FROM ( SELECT * FROM table2 WHERE table2.id = table.id ) ) Impossible
我有兩個包含大量行的表,我需要為第一行(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嗎? 或者其他方式來實現我的目標?
感謝你們對我的幫助 !
問題是因為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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.