Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取具有相同属性的用户(MySql查询)_Mysql_Sql - Fatal编程技术网

获取具有相同属性的用户(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')

我有如下所示的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')


使用
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”的财产名称的值可能相同,因此不起作用,表单如下:搜索[摩托车,汽车]、财产[车辆](提交),而此代码块可能会回答问题;你应该尝试通过添加相关解释来改进你的答案。看见