【问题标题】:What is the best way to save query results with a subquery?使用子查询保存查询结果的最佳方法是什么?
【发布时间】:2019-02-10 12:06:51
【问题描述】:

我想显示用户一起喜欢的所有相似产品对,所以我想创建一个 VIEW 来动态更新表格。

我收到无法使用子查询创建视图的消息。 我也想过创建一个临时表,但它没有效果。

当存在 VIEW 限制时,如何将查询结果保存在表中?

这是我的查询:

SELECT DISTINCT c.item1
           , c.item2
           , count(*) as times_liked_together 
         FROM 
     ( SELECT a.product_id as item1
            , b.product_id as item2 
    FROM items a 
    join items b 
         ON a.wishlist_id = b.wishlist_id 
         AND a.product_id != b.product_id
     ) c 
 GROUP 
      BY c.item1
     , c.item2

【问题讨论】:

    标签: mysql sql database view phpmyadmin


    【解决方案1】:

    MySQL 对视图有这个限制。在您的情况下,您不需要子查询:

    SELECT i1.product_id as item1, i2.product_id as liked_with,
           COUNT(*) as num_liked_together
    FROM items i1 INNER JOIN
         items i2
         ON i1.wishlist_id = i2.wishlist_id AND
            i1.product_id < i2.product_id
    GROUP BY item1, item2;
    

    请注意,我将 &lt;&gt; 更改为 &lt;。我看不出结果集中同时包含 (a, b) 和 (b, a) 的理由。如果这样做,请将&lt; 改回&lt;&gt;

    另外,SELECT DISTINCT 几乎从不与GROUP BY 一起使用。

    【讨论】:

    • 非常感谢。:) 我为此苦苦挣扎了很长时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2019-06-14
    • 2015-05-10
    相关资源
    最近更新 更多