我有一张桌子:tbl_offer
(offer_name,location)。对于特定商品,我在位置列中有多个位置,以逗号分隔。
示例:
如果优惠为offer1
,则我在位置列中有Bangalore, Mumbai, Chennai
。
现在想要编写一个查询,它将分别获取每个位置(由特定商品的逗号分隔)。我想在单独的记录中选择offer1
它应该获取Bangalore Mumbai and Chennai
。
答案 0 :(得分:1)
正如@Cylindric告诉你的,如果你可以改变数据库设计!
创建两个表,一个用于商品,一个用于位置。
OFFERS (id, name)
LOCATIONS (offer_id, name)
所以(例如)你在OFFERS和
中有(1, 'offer1')
位置(1, 'Bangalore'), (1, 'Mumbai') and (1, 'Chennai')
。
您的查询会更容易:
SELECT o.name, l.name FROM offers o
INNER JOIN locations l ON o.id = l.offer_id
老实说,你应该有三个表来避免重复位置:
OFFERS (id, name)
LOCATIONS (id, name)
OFFERS_LOC (offer_id, loc_id)
你有
在提供中(1, 'offer1')
,
LOCATIONS中的(1, 'Bangalore'), (2, 'Mumbai') and (3, 'Chennai')
和
OFFERS_LOC中的(1, 1), (1, 2) and (1, 3)
。
您的查询将是
SELECT o.name, l.name FROM offers o
INNER JOIN offers_loc ol ON o.id = ol.offer_id
INNER JOIN locations l ON ol.loc_id = l.id