После обновления форума у меня остались пустые поля, которые должны были быть заполнены. Я пытаюсь обновить таблицу с именем thread с полями из таблицы с именем post. Мне нужно обработать стол стол, упорядоченный по потоку, postid.MYSQL Пройдите через одну таблицу и обновите другую
Table: post
Field: postid - data is valid
Field: threadid - data is valid
Table: thread
Field: threadid - data is valid and matches post.threadid
Field: firstpostid - should be first post.postid found
Field: lastpostid - should be last post.postid found
Field: lastpost - should be last post.postid found
Все Стараюсь приносит такое же значение для firstpostid и lastpostid
Это примерно так же близко, как я получил, пытаясь установить способ обновить одно поле в то время. Я не могу правильно установить порядок.
UPDATE thread
INNER JOIN post ON post.threadid = thread.threadid
SET thread.firstpostid =
IF(thread.firstpostid > post.postid, post.postid, thread.firstpostid)
WHERE postid <> 0
Любые указатели были бы замечательными. Спасибо
Я ценю вашу помощь, но я все еще борется. Соответствующие таблицы - это небольшие 5300 сообщений и 333 темы, поэтому я не против использования простого неэффективного кода для выполнения задания. Я был бы очень счастлив пройти через таблицы пару раз, чтобы установить одно поле за проход. Думаю, я мог бы справиться с этим, если бы знал, где использовать указатель или по порядку по инструкции. – Chris
В идеале мне нужно пройти через стол столбца запись за раз, используя порядок threadid, postid и записать в поток таблицы. Это возможно? – Chris
Можно обрабатывать строки отдельно RBAR (строка по агонистической строке). Это подход, который принимает много неофитов. Такой подход не идеален, потому что он оказывается мучительно медленным и непозволительно ресурсоемким на больших множествах. Это неизбежно приводит к тому, «почему это так медленно на моем объеме производства, когда он работал на моем небольшом наборе тестов». Эффективно работать с «наборами» данных. – spencer7593