gpt4 book ai didi

mysql - 如何比较mysql中的逗号分隔值?

转载 作者:行者123 更新时间:2023-11-29 10:35:58 26 4
gpt4 key购买 nike

我有 3 张 table 。用户(ID,姓名)商品(id、名称、价格)和订单(id,user_id,item_id)

这里我的 item_id 列有逗号分隔的值,例如 [1,2,3]。我有以下查询,如果 item_id 具有单一值,则该查询可以完美运行。

select users.name,items.price
from orders
join users
on user.id = orders.user_id
join items
on items.id = orders.item_id
where orders.id = 1

有人可以建议我,当存在逗号分隔值时,如何获得与上述查询相同的结果?

最佳答案

尝试 find_in_set 函数:

select users.name,items.price
from orders
join users
on user.id = orders.user_id
join items
on find_in_set(items.id, orders.item_id)
where orders.id = 1

但是,用逗号分隔存储id是一种糟糕的数据库设计,你最好添加一个表来存储ordersitems之间的关系.

举个例子:

create table order_item (
order_id varchar(20),
item_id varchar(20)
);

然后查询:

select users.name,items.price
from orders
join users
on user.id = orders.user_id
join order_item oi on oi.order_id = orders.id
join items on oi.item_id = items.id
where orders.id = 1
group by orders.id

编辑:

包含 [] 后,您可以尝试以下操作:

select users.name,items.price
from orders
join users
on user.id = orders.user_id
join items
on find_in_set(items.id, replace(replace(orders.item_id, '[', ''), ']', ''))
where orders.id = 1

关于mysql - 如何比较mysql中的逗号分隔值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46425970/

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