Mysql 如何复制列

Mysql 如何复制列,mysql,sql,Mysql,Sql,我需要返回这个查询的笛卡尔乘积和一个新列,该列计算count列的平均值 select site_topics.description as topic, site_subscriptions.site_user_id as user1, count(*) as count1 from ( (site_topics_to_subscriptions inner join site_subscriptions on site_subscriptions.id = site

我需要返回这个查询的笛卡尔乘积和一个新列,该列计算count列的平均值

select site_topics.description as topic,
site_subscriptions.site_user_id as user1,
count(*) as count1 
from (
    (site_topics_to_subscriptions
    inner join site_subscriptions 
    on site_subscriptions.id = site_subscription_id)
    inner join site_topics
    on site_topics.id = site_topics_to_subscriptions.topic_id
    )
group by user1,topic
order by user1, count1 desc;
目前的结果:

期望输出


“Average”一列,将较小的计数与该行较大的计数进行比较。同样,相同的行也不成对。也就是说,不会有user1=1和user2=1的行。一般结构应该是:

SELECT q1.user AS user1, q1.count AS count1, q2.user AS user2, q2.count AS count2, GREATEST(q1.count, q2.count)/LEAST(q1.count, q2.count) AS average
FROM (your query here) AS q1
JOIN (your query here) AS q2
ON q1.user < q2.user AND q1.topic = q2.topic

然后将获取原始表的查询放在此处代替查询。创建一个执行原始查询的视图可能会有所帮助,这样您就不必在叉积中重复整个过程。

这是一个非常独特的平均值定义。您在20分钟前问了同样的问题:@Barmar这是该问题的重复吗?这是另一个问题。请阅读这两个问题,并停止将其标记为重复。您正在尝试将用户从行移动到列。这就是旋转。啊,我误解了你在做什么。我不得不将第一个q2.count改为q1.count,其中q1.topic=q2.topic;而且它工作得很好。我也会将原始查询放入视图中。非常感谢你的回答
-----------------------------------------------------
topic       |user1  |count1 |user2  |count2 |Average
-----------------------------------------------------
Gaming      |1      |3      |2      |2      |0.66
Photography |1      |3      |2      |1      |0.33
Art         |1      |1      |2      |0      |0
Gaming      |2      |2      |1      |3      |0.66
Photography |2      |1      |1      |3      |0.33
SELECT q1.user AS user1, q1.count AS count1, q2.user AS user2, q2.count AS count2, GREATEST(q1.count, q2.count)/LEAST(q1.count, q2.count) AS average
FROM (your query here) AS q1
JOIN (your query here) AS q2
ON q1.user < q2.user AND q1.topic = q2.topic