【问题标题】:need starting point on an ORDER BY需要 ORDER BY 的起点
【发布时间】:2012-03-21 19:08:32
【问题描述】:

该网站包含图像。这些图像可以排名。对图像进行排名时,该值可以是 1,2 或 3。为了保存排名,我有一个表 ranking_items。图像显示为缩略图。老板要我按等级排序。问题是,我如何在结果中包含ranking_items 中没有条目的图像?

$db->query("SELECT file_name 
    FROM images, ranking_items 
      WHERE images.id=ranking_items.image_id 
       ORDER BY ranking_items.rank ASC");

【问题讨论】:

    标签: php join mysqli


    【解决方案1】:

    当您执行FROM table1, table2 时,您正在执行JOIN

    尝试LEFT JOINranking_items 表。这将返回所有行,并将 NULLS 放在连接失败的地方。

    SELECT file_name 
    FROM images
    LEFT JOIN ranking_items ON images.id=ranking_items.image_id 
    ORDER BY ranking_items.rank ASC
    

    【讨论】:

    • 这行得通,谢谢。可以肯定地说右连接不包括空值吗?
    • RIGHT JOINLEFT JOIN 相反。这意味着 NULL 将是 images 表中不存在行的位置,而 LEFT JOINranking_items 表中不存在行时会添加 NULL。欲了解更多信息,请参阅:stackoverflow.com/questions/5706437/…
    【解决方案2】:
    SELECT file_name 
    FROM images LEFT JOIN ranking_items 
    ON images.id=ranking_items.image_id 
    ORDER BY ranking_items.rank ASC
    

    【讨论】:

      猜你喜欢
      • 2012-12-19
      • 2011-04-02
      • 2018-06-21
      • 2019-03-21
      • 2012-04-19
      • 1970-01-01
      • 2013-02-19
      • 1970-01-01
      • 2011-09-12
      相关资源
      最近更新 更多