我不确定我在这里尝试实现的目标是什么,这就是为什么我会尝试用图片来解释。
下面是我得到的查询:
SELECT DISTINCT
unspsc_commodity.`name` AS Commodity,
unspsc_code.`code` AS `Code`,
attributes.`value`
FROM
products
INNER JOIN unspsc_code ON products.unspsc_code_id = unspsc_code.unspsc_code_id
INNER JOIN unspsc_commodity ON unspsc_code.unspsc_commodity_id = unspsc_commodity.unspsc_commodity_id
INNER JOIN attributes ON products.product_id = attributes.product_id
WHERE attributes.`name` = 'Product Type'
以上查询仅选择 unspsc_commodity、unspsc_code 和 value,其中 attribute.name 具有“Product Type”。我想为没有产品类型的产品选择 unspsc_commodity、unspsc_code。因此,在属性表中没有产品类型的情况下,查询只需要选择代码和商品,并只输出 null 值。有没有可能实现。
最佳答案
将您的查询更改为具有如下所示的 LEFT JOIN
,并使用 CASE
表达式移动 select 子句中的 WHERE
条件
SELECT DISTINCT
unspsc_commodity.`name` AS Commodity,
unspsc_code.`code` AS `Code`,
CASE WHEN IFNULL(attributes.`name`,'') = 'Product Type' THEN attributes.`value` ELSE NULL END AS Value
FROM
products
INNER JOIN unspsc_code
ON products.unspsc_code_id = unspsc_code.unspsc_code_id
INNER JOIN unspsc_commodity
ON unspsc_code.unspsc_commodity_id = unspsc_commodity.unspsc_commodity_id
LEFT JOIN attributes
ON products.product_id = attributes.product_id;
关于php - MySql Select语句问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32630694/