You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将product表的backimage作为新行添加到SQL查询结果?

解决方案

可以实现,你需要用UNION ALL将原筛选结果和产品的backimage行合并在一起,具体SQL语句如下:

$notlinkImages = $this->db->query("
    -- 第一部分:筛选符合条件的额外图片
    SELECT 
        i.product_id,
        i.image,
        i.product_option_value
    FROM " . DB_PREFIX . "product_option_image AS i
    LEFT JOIN " . DB_PREFIX . "product AS z ON z.product_id = i.product_id 
    LEFT JOIN " . DB_PREFIX . "product_option_value v ON i.product_option_value = v.product_option_value
    WHERE i.product_id = '" . (int)$row['product_id'] . "' 
    AND (v.link IS NULL OR v.link = 0) 
    AND z.image != i.image

    UNION ALL

    -- 第二部分:添加当前产品的backimage作为单独行
    SELECT 
        z.product_id,
        z.backimage AS image,
        NULL AS product_option_value
    FROM " . DB_PREFIX . "product AS z
    WHERE z.product_id = '" . (int)$row['product_id'] . "'
")->rows;

说明:

  1. 第一部分查询保留了你原本的筛选逻辑:取出非链接(v.link为0或null)且非主图(与product.image不同)的额外图片。
  2. 第二部分查询单独取出当前产品的backimage,并将product_option_value设为NULL,匹配你期望的输出格式。
  3. UNION ALL会将两个查询的结果合并成一个结果集,不会自动去重(这里也不需要去重),最终就能得到每个产品的符合条件的额外图片,加上一行单独的backimage记录。

执行后得到的结果将和你期望的输出一致:

product_id     image                         product_option_value    
1              1-additional-image-1.jpg        234                   
1              1-additional-image-2.jpg        234 
1              backimage-1.jpg
2              2-additional-image-2.jpg        265                    
2              backimage-2.jpg

内容的提问来源于stack exchange,提问作者Kankan2000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 15:27:49