只选择至少有一个相似的多对1关系SQL查询修改的用户



目前我有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),您也有

这里有一个我想做的例子,假设origin user的id为1

id, sport_id

1、sport a

1, b

1, sport c

2、运动g

3,

3、

4、c

4、运动h

2、运动k

所以如果我运行一个'query',它将只返回id为2和4的用户,因为他们对运动a和c感兴趣,与我(原始用户)相同。这就是我想要实现的,我该如何修改这个:

var sql = 'SELECT * FROM [epicatest].[User] WHERE longitude != 'null' AND latitude != 'null' AND id != '' + userId + ''';

这样做吗?

还记得吗,我有一个包含所有(origin user) sport_ids的数组

谢谢。

好的,所以你正在使用Azure,所以我使用SQL Server语法。此外,我假设表User_Sport有一对列,名为user_idsport_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

最新更新