[英]MySql: Concatenate 2 columns if condition is met
我有以下数据集:
CREATE TABLE division (
id INT AUTO_INCREMENT PRIMARY KEY,
division VARCHAR(30) NOT NULL
) ENGINE=INNODB;
INSERT INTO division (division) VALUES ("Division1"), ("Division2"), ("Division3"), ("Division4");
CREATE TABLE product (
product_id INT AUTO_INCREMENT PRIMARY KEY,
product VARCHAR(30) NOT NULL,
divisionID INT
) ENGINE=INNODB;
INSERT INTO product (product, divisionID) VALUES ("Product1", 3), ("Product1", 1), ("Product2", 2), ("Product3", 4);
我有以下查询:
SELECT Concat(product,' ',division) as 'product'
FROM products p
LEFT JOIN division d ON d.id = p.divisionID
ORDER BY product;
上面的查询提取以下记录:
Product
------------------
Product1 DIvision1
Product1 Division3
Product2 Division2
Product3 Division4
问:如何修改查询,以便仅将重复的Products
与它们的Division
串联在一起,并保留唯一的产品,如以下示例所示?
Product
------------------
Product1 Division1
Product1 Division3
Product2
Product3
这是一个非常实际的解决方案...
SELECT CONCAT_WS(' ',p.product,CASE WHEN total > 1 THEN d.division ELSE NULL END) name
FROM product p
LEFT
JOIN division d
ON d.id = p.divisionid
JOIN
( SELECT product
, COUNT(*) total
FROM product
GROUP
BY product
) x
ON x.product = p.product
ORDER
BY p.product,d.division;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.