在mp_cities表中,city_name和city_id是字段
city_id city
--------------------
1 Chennai
2 Bangalore
3 Kerala
在个人资料表
中user_email city_type
------------------------------
abc@gmail.com 1,2,3
我使用以下查询
SELECT city_name
FROM mp_cities
WHERE city_id IN (SELECT city_type
FROM profile
WHERE user_email='abc@gmail.com')
此查询将导致Chennai。 我必须得到所有的城市
答案 0 :(得分:4)
您可以在MySQL中使用FIND_IN_SET()
。
SELECT a.*
FROM mp_cities a
INNER JOIN profile b
ON FIND_IN_SET(a.city_id, b.city_type)
WHERE b.user_email = 'abc@gmail.com'
但到目前为止我能想到的最好方法是正确地规范化表格。
mp_cities
个人资料
mp_cities _profile
答案 1 :(得分:3)
如果profile
表格如下所示,您将获得所需的结果:
user_email city_type
------------------------
abc@gmail.com 1
abc@gmail.com 2
abc@gmail.com 3
也就是说,内部SELECT
必须返回多行,每行包含一个数字,而不是一行以逗号分隔的数字。
答案 2 :(得分:1)
尝试使用FIND_IN_SET()
函数连接两个表,如下所示:
SELECT c.*
FROM mp_cities c
JOIN profile p
ON FIND_IN_SET(c.city_id,p.city_type) > 0;