我有两个桌子。 一种是将冰淇淋的价格保存为其他货币的方式,另一种是用户添加用于购买相应货币ID的冰淇淋的方式。
icecreamprice
id icecream_id name currency_id price
1 3 white_chocolate 2 3
2 3 white_chocolate 4 10
3 11 dark_chocolate 2 6
4 3 white_chocolate 3 4
这里的id是pk,并且会自动递增,正在从表中保存icecream_id,其中提到了冰淇淋名称及其各自的ID。
cart
id icecream_id user_id price_id(type=TEXT)
1 3 111 1,4
因此,当cart_price_id中存在icecreamprice_id且购物车user_id为111时,我想从icecreamprice和cart表中获取所有内容。
这是我的查询
"SELECT id,icecream_id,name,price,c.user_id FROM icecreamprice ic,cart c WHERE c.user_id=111 and ic.id IN (c.price_id)"
但是此查询似乎无效,它仅从第一张表中提取两行的一行
答案 0 :(得分:0)
在MySQL中,不能在文本字符串上使用IN
,但是可以使用FIND_IN_SET
:
SELECT ic.id, ic.icecream_id, ic.name, ic.price, c.user_id
FROM icecreamprice ic
JOIN cart c ON FIND_IN_SET(ic.id, c.price_id)
WHERE c.user_id=111
输出:
id icecream_id name price user_id
1 3 white_chocolate 3 111
4 3 white_chocolate 4 111
请注意,为清楚起见,我已经明确说明了您的JOIN
,并将条件添加到JOIN
中。