簡體   English   中英

Mysql - UPDATE表SET列= SELECT COUNT(*)FROM(SELECT * FROM table2 WHERE table2.id = table.id))不可能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM