1
haidii 2020-04-28 16:44:40 +08:00
可以使用 elasticsearch 、或者 mongoDB 来做。
关系型数据库的话,最好这些信息放到一张表里面, 否则没有好的办法。 |
2
littleylv 2020-04-28 16:48:38 +08:00
没细看,感觉你这里的 OR 会有问题
|
5
IMFFA OP @littleylv 啊啊,太低级了,居然会犯这种错( ̄ω ̄;),我已经给逻辑绕晕了,感谢指出。那现在这个也不能用了 o(╥﹏╥)o
|
6
asAnotherJack 2020-04-28 17:46:55 +08:00
关于 2 楼说的问题,用下边这种方式是不是可以解决,子查询改成
SELECT user_id FROM user_info GROUP BY user_id HAVING COUNT(IF( `key` ='salary' AND value > 5000 , 1, null)) > 0 AND COUNT(IF( `key` ='address' AND value = ‘广东’, 1, null)) > 0 另外这种方式可行的话,是不是可以两个表 join 然后 group by XXX having XXXX |
7
xuanbg 2020-04-28 19:26:05 +08:00
直接两表 join 不就好了吗?
|
8
xuanbg 2020-04-28 19:35:46 +08:00
|
9
xizismile 2020-04-28 19:39:37 +08:00 via Android
感觉这张扩展属性表没有必要,趁早把一个人的多条数据合并成一条数据,要不然后续的查询需求搞死你
|
10
lumious 2020-04-29 10:06:15 +08:00
用 exists 条件查询
SELECT * FROM USER WHERE AGE > 20 AND GENDER = '男' AND EXISTS (SELECT '' FROM USER_INFO WHERE USER.USER_ID = USER_INFO.USER_ID AND KEY = 'salary' AND VALUE > 5000 UNION ALL SELECT '' FROM USER_INFO WHERE USER.USER_ID = USER_INFO.USER_ID AND KEY = 'address' AND VALUE = '广东') |