如何像火种一样获得匹配,每个用户在 table 中都有自己的条目

how to get match like tinder where every user has its own entry in table

我正在开发像应用程序这样的火种,我想获取所有 match.In 我的匹配项 table 每个用户都有自己的 entry.so 对于一个匹配项有两个用户并且有table.

中共有两个条目

我尝试了 sql 如下所示的查询 select user_id, friend_id from matches where is_match = 1 group by user_id,friend_id

通过查询,我得到的结果低于 `

|--------------------------| 
|user_id|friend_id|is_match|
|--------------------------|
|   23  |    24   |    1   |
|--------------------------|
|   24  |    23   |    1   |
|--------------------------|
|   24  |    25   |    1   |
|--------------------------|
|   25  |    24   |    1   |
|--------------------------|
|   25  |    26   |    1   |
|--------------------------|
|   26   |   25   |    1   |
---------------------------

`

我想要这样的结果。

`

|--------------------------|
|user_id|friend_id|is_match|
|--------------------------|
|   23  |    24   |    1   |
|--------------------------|
|   24  |    25   |    1   |
|--------------------------|
|   25  |    26   |    1   |
|--------------------------|

`

您可以通过对 user_idfriend_id 值进行排序然后仅选择 DISTINCT 对来获得所需的结果。注意不需要 GROUP_BY

SELECT DISTINCT LEAST(user_id, friend_id) AS user1, GREATEST(user_id, friend_id) AS user2
FROM matches
WHERE is_match = 1

如果每对总是有两行,那么一个简单的解决方案是:

SELECT user_id, friend_id
FROM matches
WHERE is_match = 1 AND
      user_id < friend_id;

使用 SELECT DISTINCT(或 GROUP BY)会使查询成本更高。