目前我有sql查询
var sql = 'SELECT * FROM [epicatest].[User] WHERE longitude != \'null\' AND latitude != \'null\' AND id != \'' + userId + '\'';
这将返回: 的 ID: 姓: 名字: 出生日期: 经度: 纬度: 电子邮件:
我还有另一个名为[epicatest]的表。[User_Sports],里面有以下字段: 的 ID: sport_id
在调用上面的查询之前,我有一个存储的数组,其中包含与您(原始用户)相关联的体育ID列表。
当调用查询时,我想扩展它,以便它只选择与您共享至少一个常见运动的人(即他们有(id),VALUES(sport_id) )你也有
下面是我试图做的一个例子,想象源用户的id为1
id,sport_id
1,运动
1,运动b
1,运动c
2,运动
3,运动f
2,运动g
3,运动l
3,运动h
4,运动c
4,运动h
2,运动k
4,运动z
所以,如果我运行'查询',它将仅返回id为2和4的用户,因为他们对运动a和c感兴趣,与我(原始用户)相同。这就是我想要实现的目标,我将如何修改它:
var sql = 'SELECT * FROM [epicatest].[User] WHERE longitude != \'null\' AND latitude != \'null\' AND id != \'' + userId + '\'';
要这样做吗?
记得我有一个阵列可供我使用我的所有(原始用户)sport_ids
感谢。
答案 0 :(得分:1)
好的,所以你使用的是Azure,所以我使用的是SQL Server语法。另外,我假设表User_Sport有几列名为 user_id 和 sport_id 。
以下是查询:
SELECT DISTINCT u.* FROM
[epicatest].[User] u
INNER JOIN
[epicatest].[User_Sport] p ON u.id = p.user_id
WHERE
u.longitude != 'null'
AND
u.longitude != 'null'
AND
u.id != @user_id
AND
p.sports_id IN (1, 2, 3) -- this is the list of your sport IDs, comma-seprated