gpt4 book ai didi

mysql - 子查询使用来自父查询的值和 IN (...) 查询?

转载 作者:行者123 更新时间:2023-11-29 12:02:14 27 4
gpt4 key购买 nike

好吧,我有点迷失...不确定这是否不可能,或者我是否只是错过了一些东西...

我在“发票”表中有一个名为“产品”的列,其中包含以逗号分隔的产品 ID 列表(例如 1,2,3),以及另一个名为“产品”的表,我正在尝试其 SKU在单个查询中获取,并且也可以作为逗号分隔的列表使用,因此,如果原始“产品”列包含“1,2,3”作为条目,我希望在结果中提供另一个“skus”列包含“DD093、RT883、KR933”等条目(与这些产品 ID 匹配的示例 SKU)。

这是我所拥有的效果很好的东西(传递特定的产品 ID 列表):

SELECT i.*, (SELECT GROUP_CONCAT(sku) FROM products p WHERE p.id IN (1,2,3)) AS skus 
FROM invoices i
WHERE 1
ORDER BY i.id DESC

返回的结果是这样的:

id | products | skus
1 | 1,2,3 | DD093,RT883,KR933

但是如果我传递这样的东西:

SELECT i.*, (SELECT GROUP_CONCAT(sku) FROM products p WHERE p.id IN (i.products)) AS skus 
FROM invoices i
WHERE 1
ORDER BY i.id DESC

查询中断...

那么如何在这样的子查询中从 i.products 获取值?

这可能吗?

附注- 在你建议我标准化数据,或者判断我使用这样糟糕的设置之前,请记住,这是故意完成的,因为为每个产品的“发票”表创建单独的记录将使更多的事情变得复杂在前端,我不想也不需要去那里。这只是某种日志,将使该列的前端显示更好,这就是为什么我试图在单个查询中完成它并询问是否可能 - 如果可以,如何实现?如果没有,我也想要一个明确的答案。

最佳答案

And is that even possible?

也许,未经测试很难确定。你可以尝试这样的事情:

SELECT i.*, (
SELECT GROUP_CONCAT(sku) FROM products p
WHERE FIND_IN_SET(p.id, i.products) > 0
) AS skus
FROM invoices i
WHERE 1
ORDER BY i.id DESC

关于mysql - 子查询使用来自父查询的值和 IN (...) 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32177588/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com