繁体   English   中英

MySql:如果满足条件,则串联2列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM