如果我在组concat中返回了5个名称,是否可以进一步限制返回的表?例如,我只希望看到名为“Assembly”的公司,如果我在AND中使用它
"AND cell_name = 'Assembly'"
然后我的小组concat只显示大会,而不是其他5个名字,即使我愿意。
SELECT
GROUP_CONCAT(DISTINCT cell_name ORDER BY cell_name ASC) as Cell,
integrator_country as Country,
integrator_name as Name
FROM sme_cells_integrator_link
INNER JOIN sme_cells ON
(sme_cells.id = sme_cells_integrator_link.fk_cells_id)
INNER JOIN sme_integrator ON
(sme_integrator.id = sme_cells_integrator_link.fk_integrator_id)
WHERE integrator_country = 'Denmark'
GROUP BY integrator_name
我想要的是返回已选择的订单类型,但仍然显示公司拥有的所有订单,就像GROUP_CONCAT通常那样。
没有我的AND,返回的数据看起来像这样:
+-----------------------------------------------------+---------+--------------+
| Assembly,Packaging | Denmark | Firm 1 |
| Packaging,Palletizing | Denmark | Firm 2 |
| Handling | Denmark | Firm 3 |
| Grinding / Finishing,Handling,Packaging,Palletizing | Denmark | Firm 4 |
+-----------------------------------------------------+---------+--------------+
用我的AND,它看起来像这样:
+----------+-----------+--------+
| Assembly | Denmark | Firm 1 |
+----------+-----------+--------+
我想要的是它看起来像这样:
+--------------------+-----------+-------+
| Assembly,Packaging | Denmark | Firm 1|
+--------------------+-----------+-------+
答案 0 :(得分:1)
我们需要您的表格而不是结果,然后我们可以让您进行子选择。
但另一个快速而肮脏的选择是:
SELECT
GROUP_CONCAT(DISTINCT cell_name ORDER BY cell_name ASC) as Cell,
integrator_country as Country,
integrator_name as Name
FROM sme_cells_integrator_link
INNER JOIN sme_cells ON
(sme_cells.id = sme_cells_integrator_link.fk_cells_id)
INNER JOIN sme_integrator ON
(sme_integrator.id = sme_cells_integrator_link.fk_integrator_id)
WHERE integrator_country = 'Denmark'
GROUP BY integrator_name
HAVING Cell LIKE '%Assembly%'
正如您所看到的,使用此解决方案时,您会遇到类似名称的问题。