我有一张桌子:
首先,我知道这个结构不是最好的,但我需要接受这一点。
表___Products
|--------|----------|----------------|
| PRO_Id | PRO_Name | PRO_LinkedProd |
|--------|----------|----------------|
| 1 | Banana | 2,3,4 |
| 2 | Apple | 1,3 |
| 3 | Pear | 3 |
| 4 | Cherry | 1,2,3 |
|--------|----------|----------------|我期待在PRO_LinkedProd循环一个产品(Ex:香蕉)。
Banana的期望输出应该是:
|--------|----------|
| PRO_Id | PRO_Name |
|--------|----------|
| 2 | Apple |
| 3 | Pear |
| 4 | Cherry |
|--------|----------|这就是我迄今尝试过的:
SELECT *, IFNULL(GROUP_CONCAT(PRO_LinkedProd), ",") as list_prods
FROM ___Products p
INNER JOIN ___Products p ON p.PRO_LinkedProd like concat("%", p.PRO_Id, "%")
GROUP BY PRO_Id
ORDER BY PRO_Id ASC发布于 2023-01-25 16:06:13
你可以用:
select p.*
from ___Products p
inner join ( select PRO_LinkedProd
from ___Products
where PRO_Name ='Banana'
) x on x.PRO_LinkedProd like concat("%",p.PRO_Id, "%");在子查询中,您将得到PRO_LinkedProd,其中PRO_Name等于Banana,并使用该结果作为___Products表的联接条件。
首先,我知道这个结构不是最好的,但我需要接受这一点。
如果可能的话,你必须修正设计,以避免未来的痛苦。
https://dba.stackexchange.com/questions/322571
复制相似问题