求个sql查询语句

chinaskysun 2013-11-11 03:10:45
求个类似于电影网站的sql语句
1 标示动作片
2 标示爱情片
4 标示灾难片
8 标示故事片
16标示科幻片

3 标示爱情片 +动作片
22 标示 科幻片 + 灾难片 + 爱情片

如何写sql的查询语句 查询出 所有符合 某一类的片子。
...全文
398 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
alice_lee_32 2013-11-14
  • 打赏
  • 举报
回复
引用 24 楼 vvkl 的回复:
& 与运算即可 select * from table1 +----+------+-------+ | id | name | class | +----+------+-------+ | 1 | aa | 12 | | 2 | bb | 21 | | 3 | cc | 3 | | 4 | dd | 9 | +----+------+-------+ 想查灾难片 则 class & 4 不为 0 select * from table1 where class&4 <>0; +----+------+-------+ | id | name | class | +----+------+-------+ | 1 | aa | 12 | | 2 | bb | 21 | +----+------+-------+ 想查3 爱情片 且 动作片 select * from table1 where class&3 =3; +----+------+-------+ | id | name | class | +----+------+-------+ | 3 | cc | 3 | +----+------+-------+ 想查3 爱情片 或 动作片 select * from table1 where class&3 <> 0; +----+------+-------+ | id | name | class | +----+------+-------+ | 2 | bb | 21 | | 3 | cc | 3 | | 4 | dd | 9 | +----+------+-------+
楼上正解~
wwwwb 2013-11-13
  • 打赏
  • 举报
回复
这是算法问题,在SQL中无法解决,只有在语言代码中解决
vvkl 2013-11-13
  • 打赏
  • 举报
回复
class &4 的结果,要么是4,要么就是0 为4说明是灾难片,为0说明不是灾难片。 class &3 的结果,可能是 0,1,2,3 为0说明3里的任何一种片,不为0说明是其中的一种或多种片。 为3说明包含3里的全部类型
vvkl 2013-11-13
  • 打赏
  • 举报
回复
& 与运算即可 select * from table1 +----+------+-------+ | id | name | class | +----+------+-------+ | 1 | aa | 12 | | 2 | bb | 21 | | 3 | cc | 3 | | 4 | dd | 9 | +----+------+-------+ 想查灾难片 则 class & 4 不为 0 select * from table1 where class&4 <>0; +----+------+-------+ | id | name | class | +----+------+-------+ | 1 | aa | 12 | | 2 | bb | 21 | +----+------+-------+ 想查3 爱情片 且 动作片 select * from table1 where class&3 =3; +----+------+-------+ | id | name | class | +----+------+-------+ | 3 | cc | 3 | +----+------+-------+ 想查3 爱情片 或 动作片 select * from table1 where class&3 <> 0; +----+------+-------+ | id | name | class | +----+------+-------+ | 2 | bb | 21 | | 3 | cc | 3 | | 4 | dd | 9 | +----+------+-------+
chinaskysun 2013-11-12
  • 打赏
  • 举报
回复
引用 20 楼 ACMAIN_CHM 的回复:
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
1 我要用的就是查询的where 后面的 2 同上 3 5楼我已列出 4 我发的板块是mysql的
ACMAIN_CHM 2013-11-12
  • 打赏
  • 举报
回复
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
chinaskysun 2013-11-12
  • 打赏
  • 举报
回复
引用 15 楼 WWWWA 的回复:
你的意思是要将class中的21分解成16+4+1? 21的组成数字有多少种? 这是算法问题了
算法只有一种,就是 id num 1 1 2 2 3 4 4 8 5 16 6 32 7 64 8 128 9 256 10 512 ...........
chinaskysun 2013-11-12
  • 打赏
  • 举报
回复
引用 15 楼 WWWWA 的回复:
你的意思是要将class中的21分解成16+4+1? 21的组成数字有多少种? 这是算法问题了
是的,想不出来怎么写这个
sjqzone 2013-11-12
  • 打赏
  • 举报
回复
引用 16 楼 sjqzone 的回复:
参考wordpress的设计吧,建立标签,用标签关联,容易维护,查询负载小。
还可以考虑sphinx建立索引。
sjqzone 2013-11-12
  • 打赏
  • 举报
回复
参考wordpress的设计吧,建立标签,用标签关联,容易维护,查询负载小。
WWWWA 2013-11-12
  • 打赏
  • 举报
回复
你的意思是要将class中的21分解成16+4+1?
21的组成数字有多少种?
这是算法问题了
chinaskysun 2013-11-12
  • 打赏
  • 举报
回复
如果能有将class字段的值转换为1,2,4,8的方法,这个问题就解决了
chinaskysun 2013-11-12
  • 打赏
  • 举报
回复
引用 12 楼 ACMAIN_CHM 的回复:
如果我搜索分类class标示爱情片的2 select * from table1 where find_in_set(2,replace(class,'+',",')); 如果我搜索分类class标示灾难片的4 select * from table1 where find_in_set(4,replace(class,'+',",'));
老大,你没有理解class字段的内容含义啊
ACMAIN_CHM 2013-11-12
  • 打赏
  • 举报
回复
如果我搜索分类class标示爱情片的2 select * from table1 where find_in_set(2,replace(class,'+',",')); 如果我搜索分类class标示灾难片的4 select * from table1 where find_in_set(4,replace(class,'+',",'));
ACMAIN_CHM 2013-11-12
  • 打赏
  • 举报
回复
引用 21 楼 chinaskysun 的回复:
[quote=引用 20 楼 ACMAIN_CHM 的回复:] 建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
1 我要用的就是查询的where 后面的 2 同上 3 5楼我已列出 4 我发的板块是mysql的 [/quote]也就是说需要俺自己准备测试数据来模拟?
chinaskysun 2013-11-12
  • 打赏
  • 举报
回复
引用 8 楼 ACMAIN_CHM 的回复:
参考下贴中的正则方法。 http://blog.csdn.net/acmain_chm/article/details/4141864 REGEXP 正则的实现两个字符串组的匹配。 最近MySQL版块中类似问题出现得比较多。总结了一下。 由于某些原因,有时候我们没有按照范式的设计准则而把一些属性放到同一个字符串字段中。比如个人兴趣,有时候我们设计表为create table members (uid int primary key,uname varchar(20),hobby varchar(100));表中内容如下mysql> select * from ...
谢谢,但这不是我要的。
chinaskysun 2013-11-12
  • 打赏
  • 举报
回复
引用 7 楼 bylijinnan 的回复:
表结构这样设计,如果数据量大的话,会有问题的 个人认为应该把这个类型字段拆成多个字段,例如 isLove(是否为爱情片), isAction(是否为动作片),等等
这样的表不是为了便于查询,而是便于管理,我只是在想有没有方法来在查询中实现,结果想了一天想不出来。
chinaskysun 2013-11-12
  • 打赏
  • 举报
回复
引用 7 楼 bylijinnan 的回复:
表结构这样设计,如果数据量大的话,会有问题的 个人认为应该把这个类型字段拆成多个字段,例如 isLove(是否为爱情片), isAction(是否为动作片),等等
问题不是我要设计表,而是现有一个这样的表
ACMAIN_CHM 2013-11-11
  • 打赏
  • 举报
回复
参考下贴中的正则方法。

http://blog.csdn.net/acmain_chm/article/details/4141864
REGEXP 正则的实现两个字符串组的匹配。
最近MySQL版块中类似问题出现得比较多。总结了一下。 由于某些原因,有时候我们没有按照范式的设计准则而把一些属性放到同一个字符串字段中。比如个人兴趣,有时候我们设计表为create table members (uid int primary key,uname varchar(20),hobby varchar(100));表中内容如下mysql> select * from ...
bylijinnan 2013-11-11
  • 打赏
  • 举报
回复
表结构这样设计,如果数据量大的话,会有问题的 个人认为应该把这个类型字段拆成多个字段,例如 isLove(是否为爱情片), isAction(是否为动作片),等等
加载更多回复(6)

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧