一个mysql查询的问题

表1-list
id cat_id name
1 1 啦啦啦
2 2 啦啦啦
3 2 拉拉阿里

表2-cat
cat_id parent_id key
1 0 年龄
2 1 16
2 1 17
3 0 身高
4 3 1.8
5 3 1.7

如何获取 list表内 cat_id =2 and cat_id = 5 的数据,注意 是and不是 or

阅读 2.6k
4 个回答
新手上路,请多包涵

cat_id 怎么会即等于2又等于5 ?

题主的意思是查询cat_id=2和5的两条数据么?那就用or,或者in

list表里每条记录的cat_id不是只有一个吗,怎么会存在cat_id = 2cat_id = 5同时存在的条件。还有一个疑问就是在cat表里,为什么cat_id不是唯一的,这不应该是主键吗,怎么第二条记录和第三条记录 cat_id都是2。

你这描述也是醉了。。年龄16且身高1.6这是两种类型的数据,你存到了一张表的一个列中,这设计也是没谁了,再说你的需求确定是年龄=16且身高=1.6?同一列的同一行记录只可能有一个值!如果提需求的人知道你表结构是这样还有这样的需求那你就可以照脸吐他了,棒槌一个!
So。。如果你的需求是年龄=16和身高=1.6的记录,基于你这个表结构还是可以取出来的,sql如下:

select * 
from cat a 
join cat b 
on a.cat_id=b.parent_id 
where 
    (a.key='年龄' and b.key='16') or 
    (a.key='身高' and b.key='1.6');
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题