源表有378列,目标表有38列,它们都存储用户数据。假设我的User_ID = 10
在源表中,有超过50列可以显示我的用户ID。
因此,我需要一个脚本来搜索这66列,并将用户ID在源表中出现的次数插入到目标表中,同时记住,无论用户ID在该行中出现多少次,1行都将被计为1。
目前我有以下脚本:

INSERT INTO target_table (matches)
    SELECT *
    FROM match_details
    WHERE player_stats.player_id IN (col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11)

最佳答案

您的架构需要一些工作。列不应该是列,它们应该在另一个表中。
不过,如果您有一个包含用户id的表。
SQL语言:

INSERT INTO target_table (user_id, matches)
    SELECT u.id AS user_id, count(*)
    FROM users u
        JOIN match_details m
            ON u.id IN (d.col1, d.col2, d.col3, d.col4, d.col5...)
    GROUP BY user_id

关于php - SQL语句将数据从源表插入目标表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34249504/

10-11 03:13