首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在字段中循环的PDO请求

在字段中循环的PDO请求
EN

Database Administration用户
提问于 2023-01-25 15:49:13
回答 1查看 42关注 0票数 1

我有一张桌子:

首先,我知道这个结构不是最好的,但我需要接受这一点。

___Products

代码语言:javascript
复制
|--------|----------|----------------|
| 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的期望输出应该是:

代码语言:javascript
复制
|--------|----------|
| PRO_Id | PRO_Name |
|--------|----------|
|      2 |    Apple |
|      3 |     Pear |
|      4 |   Cherry |
|--------|----------|

这就是我迄今尝试过的:

代码语言:javascript
复制
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
EN

回答 1

Database Administration用户

回答已采纳

发布于 2023-01-25 16:06:13

你可以用:

代码语言:javascript
复制
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://dbfiddle.uk/nMmDm32e

首先,我知道这个结构不是最好的,但我需要接受这一点。

如果可能的话,你必须修正设计,以避免未来的痛苦。

在数据库列中存储分隔列表真的有那么糟糕吗?

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/322571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档