假设我正在构建一个约会应用程序,根据用户的约会目标为他们生成推荐。假设用户在数据库中表示如下:
Column | Type
---------------------+-----------------------------
id | bigint
updated_since | timestamp
goal | text
假设
goal
的值可以是以下四项之一:seeking_sugar_daddy
seeking_sugar_mama
be_sugar_daddy
be_sugar_mama
现在,假设我有一个推荐引擎,它定期运行,并根据目标和其他一些标准(身高、年龄等)为所有用户生成匹配项。推荐引擎将一对用户作为输入并生成分数。
生成推荐引擎输入列表的最有效方法是什么?唯一有效的输入是具有匹配目标的对-例如,如果
User A
有一个目标seeking_sugar_daddy
,而User B
有一个目标be_sugar_daddy
则是有效的输入,但seeking_sugar_daddy
和be_sugar_mama
不是有效的对。一旦我从数据库中获取所有用户,我应该如何对他们进行分组或者在数据库中有这样做的方法吗?
最佳答案
让我们将您的目标缩写为"A"
,"C"
,"G"
,"T"
,其中A匹配T,C匹配G。下面是您的匹配:
SELECT * from users AS a JOIN users AS b
ON (a.goal = "A" AND b.goal = "T") OR (a.goal = "C" and b.goal = "G")
注意,由于同一个表出现在左侧和右侧,因此不需要检查
a.goal = "T"
等。关于python - 按列对数据库行进行分组的有效方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43003515/