[英]Trouble with complex MySQL query
對不起,我無法很好地解釋這一點。 我正在嘗試編寫MyBB插件,以在幾天后鎖定線程。 threads
表中的重要列是tid, fid, lastpost, lastpostuserid, closed, sticky
。 posts
表具有pid, tid, fid, dateline
。
我有一個需要運行的論壇列表( fid
)。 它需要更新在一定天數內沒有響應的那些論壇中的所有線程,而忽略該機器人發布的特定用戶ID的發布。 它需要更新lock
, sticky
, fid
(用於移動線程),或發布對此的回復。
該插件在PHP中,因此,如果我需要處理任何結果,可以在此完成。
我的麻煩是,我對除基本的SELECT或UPDATE命令以外的SQL查詢不是很熟悉,而且我不確定該將其分解為哪些查詢。
更新:好的,這篇文章不是很清楚。
我有的表:
threads
: tid, fid, subject, prefix, icon, poll, uid, username, dateline, firstpost, lastpost, lastposter, lastposteruid, views, replies, closed, sticky, numratings, totalratings, notes, visible, unapprovedposts, attachmentcount, deletetime
posts
: pid, tid, replyto, fid, subject, icon, uid, username, dateline, message, ipaddress, longipaddress, includesig, smilieoff, edituid, edittime, visible, posthash
我需要的:
我需要鎖定(將鎖定字段更新為1),粘性(將粘性字段更新為1)或移動(將fid更改為指定值),或回復(使用正確的tid創建新帖子,並進行相應操作)具有指定fid(論壇ID)的線程。
我遇到的麻煩是我不知道如何分解它。 我知道SQL可以執行非常復雜的查詢,從而避免了我執行多個查詢和解析結果。
偽代碼:
查找所有具有fid
$ fid和lastpost
少於$ lastpost
天前且lastposterid
不是$ userid的lastposterid
(機器人發布的用戶)
對於fid
中具有lastposterid
作為$ userid的線程,請獲取tid
。 查找所有帖子posts
與tid
, uid
是不是$用戶ID,最高dateline
是前$天前。 儲存tid
。
同時獲得帶有這些tid
的線程-現在,我們擁有的所有線程的響應最后不是$ day以前從bot那里獲得的。
如果指定了這些線程,請更新這些線程的lock,sticky或fid字段。
如果設置了回復,則針對該主題創建一個新帖子。
這樣有道理嗎? 我知道我很樂意解釋這一點。
過去,我通過使用mysql'events'在特定時間間隔自動執行任務來完成與mysql類似的任務-例如cron for SQL。
看看: 這是一個教程 , 這是MySQL的文檔 。
更新:
我仍然不確定我是否完全理解您的問題,因為措辭有點令人困惑(您描述了一個名為threads的表,但隨后提到了“對於fid中的線程”),但是我認為您想要實現的目標可以通過(有些復雜)UPDATE完成。
這個問題可能應該移到dba.stackexchange.com ...但是您要查詢的似乎是子查詢的更新。 標記為移至dba。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.