簡體   English   中英

復雜的MySQL查詢有問題

[英]Trouble with complex MySQL query

對不起,我無法很好地解釋這一點。 我正在嘗試編寫MyBB插件,以在幾天后鎖定線程。 threads表中的重要列是tid, fid, lastpost, lastpostuserid, closed, sticky posts表具有pid, tid, fid, dateline

我有一個需要運行的論壇列表( fid )。 它需要更新在一定天數內沒有響應的那些論壇中的所有線程,而忽略該機器人發布的特定用戶ID的發布。 它需要更新lockstickyfid (用於移動線程),或發布對此的回復。

該插件在PHP中,因此,如果我需要處理任何結果,可以在此完成。

我的麻煩是,我對除基本的SELECT或UPDATE命令以外的SQL查詢不是很熟悉,而且我不確定該將其分解為哪些查詢。

更新:好的,這篇文章不是很清楚。

我有的表:

threadstid, fid, subject, prefix, icon, poll, uid, username, dateline, firstpost, lastpost, lastposter, lastposteruid, views, replies, closed, sticky, numratings, totalratings, notes, visible, unapprovedposts, attachmentcount, deletetime

postspid, tid, replyto, fid, subject, icon, uid, username, dateline, message, ipaddress, longipaddress, includesig, smilieoff, edituid, edittime, visible, posthash

我需要的:

我需要鎖定(將鎖定字段更新為1),粘性(將粘性字段更新為1)或移動(將fid更改為指定值),或回復(使用正確的tid創建新帖子,並進行相應操作)具有指定fid(論壇ID)的線程。

我遇到的麻煩是我不知道如何分解它。 我知道SQL可以執行非常復雜的查詢,從而避免了我執行多個查詢和解析結果。

偽代碼:

  1. 查找所有具有fid $ fid和lastpost少於$ lastpost天前且lastposterid不是$ userid的lastposterid (機器人發布的用戶)

  2. 對於fid中具有lastposterid作為$ userid的線程,請獲取tid 查找所有帖子poststiduid是不是$用戶ID,最高dateline是前$天前。 儲存tid

  3. 同時獲得帶有這些tid的線程-現在,我們擁有的所有線程的響應最后不是$ day以前從bot那里獲得的。

  4. 如果指定了這些線程,請更新這些線程的lock,sticky或fid字段。

  5. 如果設置了回復,則針對該主題創建一個新帖子。

這樣有道理嗎? 我知道我很樂意解釋這一點。

過去,我通過使用mysql'events'在特定時間間隔自動執行任務來完成與mysql類似的任務-例如cron for SQL。

看看: 這是一個教程這是MySQL的文檔

更新:

我仍然不確定我是否完全理解您的問題,因為措辭有點令人困惑(您描述了一個名為threads的表,但隨后提到了“對於fid中的線程”),但是我認為您想要實現的目標可以通過(有些復雜)UPDATE完成。

這個問題可能應該移到dba.stackexchange.com ...但是您要查詢的似乎是子查詢的更新。 標記為移至dba。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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