十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
多选框是checkbox好吧。。。
成都创新互联公司从2013年创立,先为原阳等服务建站,原阳等地企业,进行企业商务咨询服务。为原阳企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
一般的做法都是用个符号分割,然后组成字符串,作为字符串字段保存在数据库里。
如果选项很少的话,也可以考虑每个选项单独一个字段保存。
一般不会直接去插入这么多数值。一般只是做个索引即可。什么意思
就是你可以单独建一个表存储这些爱好项目,
然后在用户信息表中那个那个爱好字段直接使用数组的形式列出来即可。
这样做的一个很大的好处是:
1.可以节省大量的空间,在数据量大的时候,你会发现,真正的项目信息 只有设置的那几个。
2.易于控制,数据不受其变动影响。只要在单独的表中维护这些字段即可,例如以后要增加之类的。
第二个提到搜索问题,我们只考虑搜索并不大的情况下,搜索的条件都变成刚才那个爱好项目表的主键,这样搜索起来相对会更好一些。
create table names(id int,name varchar(10));
insert into names values(1,'张三')
insert into names values(2,'李四')
insert into names values(3,'王五')
insert into names values(4,'赵六')
select replace(b,'张三',t2.name) b from
(select ceiling(rand()*5) id,b from a) t1
left join
(select id,name from names) t2
on t1.id=t2.id
我没有测试,可能有些小问题,但思路应该是对的
给随机姓名编号
a表用随机数生成编号列,对应姓名编号
关联2个表,并替换相应字段
我做过类似的查询,就是用字典项表的数据id列,与数据表的字符串列做instr比较,比较时,两个数据分别在前后加',',防止第一个和最后一个字典项无法查找出来。
举个例子,数据表
字典表 dict
id name
12 wifi
13 冰箱
14 洗衣机
15 电视
业务表 query_table
id query_str
1 12,13,14,15
2 12,14
3 14,15
SELECT *
FROM dict a,query_table b
WHERE INSTR(CONCAT(CONCAT(',',b.query_str),','), CONCAT(',', CONCAT(a.id,',')))-0 AND b.id=1
看实际效果
请问你是要全选什么?是全选表吗?如果是全选表的话 双击数据库后,在右侧显示表 ctrl+a 就可以 ,或者按住鼠标左键 选取
单表查询有利于后期数据量大了分库分表,如果联合查询的话,一旦分库,原来的sql都需要改动