不使用临时表,而是多嵌套一层,多来一层子查询,可以解决上面问题吗?
时间: 2024-10-01 08:10:06 浏览: 24
嵌套查询-数据查询专题 如何使用sql查询数据
理论上,你可以通过嵌套更多的子查询来达到目的,不过这可能导致SQL语句变得更复杂,性能上可能会有所下降,特别是在大数据集上。如果只是想避免更新目标表自身,一个可行的方法是使用`JOIN`代替`IN`。这里是一个尝试的例子,但请注意,MySQL不一定支持这种级联更新的方式,具体情况取决于MySQL版本和优化器的行为:
```sql
UPDATE shengzici_word as outer_set
SET isrepeat = 1
JOIN (
SELECT word, menuid, COUNT(*) as count
FROM shengzici_word
WHERE nianji = 5
GROUP BY word, menuid
HAVING COUNT(*) > 1
) as inner_count ON outer_set.word = inner_count.word AND outer_set.menuid = inner_count.menuid;
```
尽管如此,通常建议还是使用临时表,因为JOIN在这种情况下可能是更直观且更稳定的解决方案。
阅读全文