【问题标题】:MySQL Join of two SELECT result两个 SELECT 结果的 MySQL 连接
【发布时间】:2014-06-19 18:56:13
【问题描述】:

我有两个选择:

SELECT ID, ID_cat, modello 
FROM tbArticoli 
WHERE ID_cat=5 

Json 中的示例结果:

{"ID":"5","ID_cat":"5","modello":"Hawaii"},
{"ID":"6","ID_cat":"5","modello":"T-Shirt Righe"},
{"ID":"7","ID_cat":"5","modello":"Polo"},
{"ID":"8","ID_cat":"5","modello":"Fantasia"},
{"ID":"9","ID_cat":"5","modello":"Fiori"},
{"ID":"10","ID_cat":"5","modello":"Arcobaleno"},
{"ID":"11","ID_cat":"5","modello":"Oro"},
{"ID":"12","ID_cat":"5","modello":"Argento"},
{"ID":"13","ID_cat":"5","modello":"StelleStrisce"}    

还有一个选择:

SELECT IDModello, 
FLOOR(AVG(voto)) AS votomedio 
FROM tbCommenti 
GROUP BY IDModello

结果:

{"IDModello":"5","votomedio":"7"},
{"IDModello":"6","votomedio":"7"},
{"IDModello":"7","votomedio":"8"},
{"IDModello":"8","votomedio":"6"}

我需要这样的最终结果:

{"ID":"5","ID_cat":"5","modello":"Hawaii","votomedio":"7"},
{"ID":"6","ID_cat":"5","modello":"T-Shirt Righe","votomedio":"7"},
{"ID":"7","ID_cat":"5","modello":"Polo","votomedio":"8"},
{"ID":"8","ID_cat":"5","modello":"Fantasia","votomedio":"6"},
{"ID":"9","ID_cat":"5","modello":"Fiori","votomedio":"null"},
{"ID":"10","ID_cat":"5","modello":"Arcobaleno","votomedio":"null"},
{"ID":"11","ID_cat":"5","modello":"Oro","votomedio":"null"},
{"ID":"12","ID_cat":"5","modello":"Argento","votomedio":"null"},  
{"ID":"13","ID_cat":"5","modello":"StelleStrisce","votomedio":"null"}

on tbArticoli.ID = tbCommenti.IDModello

哪个是最好的查询?

谢谢。

【问题讨论】:

    标签: mysql select join average


    【解决方案1】:

    假设你想加入 id = idmodello,你可以这样做

    SELECT * 
    FROM (SELECT ID, ID_cat, modello 
              FROM tbArticoli 
              WHERE ID_cat=5) AS tbA
    LEFT JOIN (SELECT IDModello, 
              FLOOR(AVG(voto)) AS votomedio 
              FROM tbCommenti 
              GROUP BY IDModello) as tbC
    ON tbA.ID = tbC.IDModello
    

    您可以将子查询指定为从中选择的内容,因为 MySQL 从一组元组中进行选择。表名只是指定您想要该表中的所有元组,而在上面的查询中,您正在指定您想要的特定元组。此查询中需要注意的主要事项是,您必须使用“AS”关键字为每组元组指定一个临时名称。

    【讨论】:

    • 它有效,但我也需要 tbArticoli 表的所有元组以及“votomedio”列“null”。
    • JOIN 更改为 LEFT JOIN。我将编辑我的回复
    • 很高兴听到!乐于助人。
    • 这是最终查询,没有 IDModello 列和值: SELECT ID, ID_cat, modello, votomedio FROM (SELECT * FROM tbArticoli WHERE ID_cat=5) AS tbA LEFT JOIN (SELECT IDModello, FLOOR(AVG (voto)) AS votomedio FROM tbComenti GROUP BY IDModello) as tbC ON tbA.ID = tbC.IDModello
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 2011-05-16
    • 2021-03-25
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多