Postgresql:如何合并2个查询
我有一个案例,需要组合两个查询以获得预期的重新结果: 我有两张桌子: 学生Postgresql:如何合并2个查询,sql,postgresql,Sql,Postgresql,我有一个案例,需要组合两个查询以获得预期的重新结果: 我有两张桌子: 学生 +------+-------+------------------------------------+ | id | name | ... | +------+-------+------------------------------------+ | 1 | Tom | ...
+------+-------+------------------------------------+
| id | name | ... |
+------+-------+------------------------------------+
| 1 | Tom | ... |
| 2 | Mary | ... |
| 3 | Peter | ... |
| 4 | Laura | ... |
+------+-------+------------------------------------+
颜色
我有两个问题
//Select all student
select name from student
//Select a random color
select color from color
order by random()
limit 1
如何合并两个查询的结果以获得最终结果
+------+-------+-------+
| id | name | team |
+------+-------+-------+
| 1 | Tom | red |
| 2 | Mary | red |
| 3 | Peter | blue |
| 4 | Laura | red |
+------+-------+-------+
列“team”中的值是表“color”中的随机值
感谢您的建议。使用两个表的交叉连接,并在上使用适当的顺序进行区分:
Select S.ID,S.Name,C.color as Team
from student s inner join color c on s.ID=c.ID
select distinct on(s.id, name) s.id, name, color
from student s
cross join color
order by 1, 2, random()
注意
order by 1, 2, random()
表示按第一、第二列排序,然后按random()排序,相当于
order by s.id, name, random()
SELECT DISTINCT ON(表达式[,…])仅保留给定表达式计算结果相等的每组行的第一行。DISTINCT ON表达式使用与ORDER BY相同的规则进行解释(见上文)。请注意,每个集合的“第一行”是不可预测的,除非使用ORDER BY来确保所需的行首先出现。(…)DISTINCT ON表达式必须与最左边的ORDER BY表达式匹配。ORDER BY子句通常包含其他表达式,这些表达式确定每个DISTINCT ON组中所需的行优先级
使用两个表的交叉连接,并在上使用适当的order by:
select distinct on(s.id, name) s.id, name, color
from student s
cross join color
order by 1, 2, random()
注意
order by 1, 2, random()
表示按第一、第二列排序,然后按random()排序,相当于
order by s.id, name, random()
SELECT DISTINCT ON(表达式[,…])仅保留给定表达式计算结果相等的每组行的第一行。DISTINCT ON表达式使用与ORDER BY相同的规则进行解释(见上文)。请注意,每个集合的“第一行”是不可预测的,除非使用ORDER BY来确保所需的行首先出现。(…)DISTINCT ON表达式必须与最左边的ORDER BY表达式匹配。ORDER BY子句通常包含其他表达式,这些表达式确定每个DISTINCT ON组中所需的行优先级
不,它将只返回学生1和2,而不是所有学生不,它将只返回学生1和2,而不是所有学生我工作得很好,你能给我解释更多关于1,2,random()的顺序吗?你救了我一天。它工作得很好,你能给我解释更多关于1,2,random()的顺序吗?你救了我一天。