Omr*_*dan 12
这是你应该做的:
重新设计您的数据库以拥有城市表:
city(id int, name varchar)
Run Code Online (Sandbox Code Playgroud)
和用户表:
user(id int, name varchar, ...)
Run Code Online (Sandbox Code Playgroud)
和user_city表:
user_city(user_id int, city_id int)
Run Code Online (Sandbox Code Playgroud)
仅此一项就可以消除每个用户10个城市的限制.
找到用户居住的城市:
select city_id form user_city where user_id = ?
Run Code Online (Sandbox Code Playgroud)
现在你如何从该列表中找到居住在3个或更多城市的用户?一种方法是从每个用户所在的列表中计算城市数量,例如:
select user_id,count(*) n
from user_city
where city_id in (select city_id
from user_city
where user_id = ?)
group by user_id having n >= 3;
Run Code Online (Sandbox Code Playgroud)
我没有真正测试这个,但它应该工作.
你还必须弄清楚如何索引这些表.