嘗試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
用逗號分開是一種不好的分貝設計,你最好添加一個表來存儲之間的關係orders
和items
。
只是舉個例子:
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
請建議更好的設計。我正在存儲整個id數組。 – Hitendra
感謝您提供更好的設計。我試着用find_in_set查詢,但沒有得到任何結果。我稍後會實施你的建議,但現在我想從現在得到結果。 – Hitendra
我的db字段值爲「[1,2,3]」,注意它有兩個方括號。 – Hitendra