我需要SQL查詢幫助:SQL子查詢所有
UPDATE content_type_blog b
LEFT JOIN node n
ON n.nid = b.nid
SET b.field_is_latest_value = 1
WHERE n.nid IN (
(
SELECT nid
FROM node
GROUP BY uid
ORDER BY created DESC
)
);
在WHERE
子句選擇返回4012倍的結果,但在運行整個查詢時更新124K結果,而不是限制它與那些在子查詢中匹配的4012匹配。
此查詢有意更新content_type_blog
- 表列nid
其中在節點表中創建的最高(最新)。
讓我們忘了問題的更新部分。你能構建一個能夠返回所需結果的SELECT查詢嗎?如果沒有,請考慮提供適當的DDL(和/或一個sqlfiddle)與期望的結果。另請注意,UPDATE語句上的OUTER JOIN很少。 – Strawberry
SELECT nid FROM節點GROUP BY uid ORDER BY創建DESC;會返回neede結果集,但出於某種原因,我無法確定使用此數據集的WHERE子句允許UPDATE更新content_type_blog上的所有行,而不是限制爲子查詢返回的那些行。 –
我懷疑你需要在2個條件加入該查詢,如果你想要它限制4012更新到一個特定的組。 – Mihai