我有一张数据表,结构如下。
己知条件是attr_id=151或153,attr_value='4L'或‘SM’,所以写如下SQL语句。
SELECT * FROM 表名 FROM WHERE attr_id IN(151,153) AND attr_value IN('4L','SM')
查询结果:
这不是我想要的,我想只查出如下结果,该怎么写呢?
己知条件是attr_id=151或153,attr_value='4L'或‘SM’,所以写如下SQL语句。
SELECT * FROM 表名 FROM WHERE attr_id IN(151,153) AND attr_value IN('4L','SM')
查询结果:
这不是我想要的,我想只查出如下结果,该怎么写呢?
where ID=(select max(goods_attr_id)from tb where Name=a.Name) order by goods_attr_id;
我说的简单一些。就是取出attr_value值同时是SM和4L的数据。之所以是goods_id是1035,那是因为它的attr_value值那即是4L也是SM。
我写的SQL如下,但不好用。
SELECT * FROM table WHERE attr_value='4L' OR attr_value='SM'
WHERE attr_id =153 and attr_value='4L'
and exists (select 1 from 表名 where attr_id =151 and attr_value='SM' and goods_id =t.goods_id )