获取具有相同属性的用户(MySql查询)
我有如下所示的2个表,我想搜索拥有车辆“motorbike”和“car”的用户,与这些表相关,搜索结果应该只显示(1)john,而不是(3)mark,因为我想要“和”not“或” MySQL查询是如何实现的获取具有相同属性的用户(MySql查询),mysql,sql,Mysql,Sql,我有如下所示的2个表,我想搜索拥有车辆“motorbike”和“car”的用户,与这些表相关,搜索结果应该只显示(1)john,而不是(3)mark,因为我想要“和”not“或” MySQL查询是如何实现的 select * from members m left join properties p on m.user_id = p.user_id where concat_ws(',',property,value) in ('vehicle,motorbike','vehicle,car')
select * from members m left join properties p on m.user_id = p.user_id where concat_ws(',',property,value) in ('vehicle,motorbike','vehicle,car')
使用
HAVING
子句:
SELECT
A.user_id,
name,
property
FROM members A
INNER JOIN properties B
ON A.user_id=B.user_id
WHERE value IN ('motorbike','car')
GROUP BY A.user_id,name,property
HAVING COUNT(A.user_id)<>1
选择
A.user\u id,
名称
财产
A成员
内部连接属性B
在A.user\u id=B.user\u id上
其中价值单位为(‘摩托车’、‘汽车’)
按A.user\u id、名称、属性分组
具有计数(A.user_id)1
试试这个:
select name from members m, properties p where m.user_id=p.user_id and p.value="moterbike" and p.value="car";
恕我直言
我认为,如果我们使用have示例,有时它会给出错误的结果,因为某个时间值可能在同一用户中有2辆或更多的车
连接示例未检索任何记录
我的答案是
SELECT cc.*,mem.name
FROM
(SELECT user_id
FROM propoties
WHERE value='car') cc
JOIN
(SELECT userid
FROM properties
WHERE value='moterbyke') mb ON cc.userid=mb.userid
JOIN member mem ON cc.memberid=mem.memberid
从成员m中选择*左连接属性p on m.user_id=p.user_id,其中concat_ws(',',属性,值)在('vehicle,motorbike','vehicle,car')中代码中的关键字“vehicle”在哪里?重要的是,由于“vehicle”或“treasure”的财产名称的值可能相同,因此不起作用,表单如下:搜索[摩托车,汽车]、财产[车辆](提交),而此代码块可能会回答问题;你应该尝试通过添加相关解释来改进你的答案。看见