With data1 as
(
SELECT COUNT(*) as cnt
FROM `table2`
WHERE `uid` = 1011 AND `opt` = 1)
Update table1 t1 , (Select cnt from data1) t2
Set ans=t2.cnt
WHERE `uid`= 1011;
UPDATE `table1` c
LEFT JOIN (
SELECT `uid`, COUNT(*) as cnt
FROM `table2`
WHERE `uid` = 1011 AND `opt` = 1
GROUP BY `uid`) AS b ON b.uid = c.uid
SET `ANS` = c.uid
WHERE c.uid = 1011
3条答案
按热度按时间ih99xse11#
选择table2中与特定uid和opt匹配的行数。有一个适当的索引用于查找:
然后访问带有特定uid的table1行。也有一个合适的索引:
snvhrwxg2#
试试这个。下面的语句会比你原来的update语句更快,因为在那个update语句中,每次都会对每一行进行计数。因此,在with子句下面使用更慢的方法可以确保在表本身上查询一次结果。然后,可以使用它的任何次数如下
eoxn13cs3#
也许是这样的
或加入槽ID: