mysql向一列插入多列数据

标签 mysql insert left-join

你好,我有这样的 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

有什么建议吗?谢谢

最佳答案

首先,让我们去掉所有不必要的子查询,使查询更标准一些:

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';

然后我们将使用 UNION 将所有 userid 列合并到一个列中,并在前面添加一个 INSERT:

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_iduserid 方面有点不一致 - 我开始清理它,然后意识到它实际上可能在您的表中,所以您可能需要对我的清洁做一点清洁。

关于mysql向一列插入多列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28966054/

相关文章:

MYSQL 查询 LEFT JOIN 和 GROUP BY

php - 连接到 MYSQL - 如何访问setting.php中的数据库数组

PostgreSQL 临时文件使用率非常高

laravel - 如何在laravel上插入大数据?

sql-server - Powershell将对象插入SQL Server数据库更优雅的解决方案

mysql left join 问题与 SU​​M 和 WHERE 子句

SQL ORACLE 将两个查询连接在一起?

mysql - UPDATE 比等效的 SELECT 影响更少的行

php - php中的对象问题

mysql - 如何将多个 SQL 查询合并为一个