2015-03-10 2 views
2

Привет У меня есть MySQL запросов, как этотMySQL вставки данных в несколько колонок в одном столбце

Select postid, user_id , qfav.userid, qfeed.userid, qview.userid 
from post_words as qw 
left join (Select userid, postid as postidfav from post_favorite) as qfav 
    on qfav.questidfav=qw.questid 
left join (Select userid, questid as questidfeed from post_feedback) as qfeed 
    on qfeed.questidfeed=qw.questid 
left join (Select userid, questid as questidview from post_stats_view) as qview 
    on qview.questidview=qw.questid 
where qw.word='stackoverflow'; 

Результат

questid user_id userid userid userid 

100  4  3  null 5 
    25  1  4  8  6 
200  76  7  21  23 

Как я могу вставить значения столбца в другой таблице один столбец, как

userids 
    4 
    3 
    null 
    5 
    1 
    4 
    8 
    6 
    76 
    7 
    21 
    23 

Любое предложение? Благодаря

ответ

2

Во-первых, давайте сделаем запрос, немного больше стандарта, избавившись от всех ненужных подзапросов:

Select postid, user_id , qfav.userid, qfeed.userid, qview.userid 
from post_words as qw 
left join post_favorite as qfav 
    on qfav.questidfav=qw.questid 
left join post_feedback as qfeed 
    on qfeed.questidfeed=qw.questid 
left join post_stats_view as qview 
    on qview.questidview=qw.questid 
where qw.word='stackoverflow'; 

Тогда мы принесем все userid столбцы в одной колонке с использованием UNION и PREPEND Вкладыш на фронт:

INSERT INTO SomeTable (userid) 
Select userid 
    from post_words as qw 
    where qw.word='stackoverflow' 
UNION 
Select qfav.userid 
    from post_words as qw 
    left join post_favorite as qfav 
    on qfav.questidfav=qw.questid 
    where qw.word='stackoverflow' 
UNION 
Select qfeed.userid 
    from post_words as qw 
    left join post_feedback as qfeed 
    on qfeed.questidfeed=qw.questid 
    where qw.word='stackoverflow' 
UNION 
    Select qview.userid 
    from post_words as qw 
    left join post_stats_view as qview 
    on qview.questidview=qw.questid 
    where qw.word='stackoverflow'; 

Там, наверное, какой-нибудь способ, чтобы избежать необходимости делать qw.word='stackoverflow' 4 раза, но не вдохновение не ударяет меня прямо сейчас ...

Убедитесь, что ваш SomeTable не требует уникальной колонки user_id.

Обратите внимание, что вы были немного несовместимы в user_id vs userid - Я начал очищать его, а затем понял, что он действительно может быть в ваших столах, поэтому вам, возможно, придется немного очистить мою очистку.

+0

thx Питер, хорошая работа. –