将多个数据库查询合二为一

时间:2019-06-27 19:34:43

标签: sql postgresql

我列出了10个match_id:region对和

目前,我正在为每对查询该查询10次。

SELECT uuid, url, score
FROM vods 
  JOIN match ON vods.id = match.vod
  JOIN users ON match.owner = users.id
WHERE match_id = $1 
  AND match.region = $2 
  AND users.region = $2

然后将这10个查询的结果添加到JSON对象。

{
  uuid0: {
    url: "",
    score: "",
  },
  ...
}

我想知道是否有一种方法可以通过单个查询而不是多个查询来实现相同的目的。

1 个答案:

答案 0 :(得分:1)

您可以将IN条件与元组一起使用

SELECT uuid, url, score
FROM vods 
  JOIN match ON vods.id = match.vod
  JOIN users ON match.owner = users.id AND match.region = users.region
WHERE (match_id, match.region) in ( (1,1), (2,2), (3,3), (4,4), ...)