MySQL查询IN子句

时间:2019-02-13 03:02:33

标签: mysql

我有两个桌子。 一种是将冰淇淋的价格保存为其他货币的方式,另一种是用户添加用于购买相应货币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)"

但是此查询似乎无效,它仅从第一张表中提取两行的一行

1 个答案:

答案 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中。

Demo on dbfiddle