如何在所有可能的对中比较SQL列中的值对?

时间:2015-05-20 12:56:50

标签: sql postgresql

如果有人可以提供帮助,那就太好了! 我使用9.3的{​​{1}}版本。

我有一个表(称为postgreSQL),有三列;

  • trackurl
  • userurl
  • 日期

这是充满数据的,另一个(现在是空的)表(称为likes)有4列;

  • track1
  • track2
  • 日期
  • userurl

表'赞'的关键是track2tracks。 表(trackurl, userurl, date)的关键是track2tracks

我想在表(track1, track2, date, userurl)中填入同一位用户喜欢的所有曲目组合,以显示两个喜欢的最新日期。

到目前为止,我理解:我需要在userurl上对like-table进行分区,然后为每个用户比较他们日期的所有喜欢对。然后我需要将这些对(作为track1和track2)添加到track2tracks-table,同时添加最新日期和相应的用户。

我遇到的最大问题是如何比较对的值(同一列的日期;日期)。

非常感谢你!!

1 个答案:

答案 0 :(得分:1)

INSERT INTO track2tracks
  SELECT l1.trackurl, l2.trackurl, max(greatest(l1.date, l2.date)), l1.userurl
  FROM likes l1
  JOIN likes l2 ON (l1.userurl = l2.userurl) AND (l1.trackurl != l2.trackurl)
  GROUP BY l1.trackurl, l2.trackurl, l1.userurl;