我有这个问题:
select id, name
from contributor
where id in (select contributor_id
from procedure_contributor
where procedure_id = 13);
此查询返回:
id name
_____________
25 "Steven"
5 "Sergio"
4 "Nadine"
21 "Sami"
3 "Nicolas"
23 "Samuel"
17 "Sarrah"
22 "Andrea"
24 "Ramos"
我想从嵌套查询返回时获取id:
select contributor_id from procedure_contributor where procedure_id = 13
返回:
contributor_id
________________
"3"
"22"
"17"
"4"
"5"
"21"
"23"
"24"
"25"
有办法吗?
答案 0 :(得分:0)
呃,一种方法是在你的子查询中添加一个row_number()。 'IN'将不再有效,因此您需要加入它然后通过此row_number()进行排序。
但实际上,您只是以随机顺序显示结果。下次运行此查询时,您可以按其他顺序获取商品。因此,正确的解决方法是通过添加订单并对所需的列进行排序。
答案 1 :(得分:0)
不会从子查询中以任何顺序返回值。关系数据库中的行不是“已排序”的。没有数据库的订单可以按照它认为合适的任何顺序自由返回。并且主查询无论如何都将忽略用于IN的子查询中的顺序。您可以保证特定排序顺序的唯一(真正:唯一)方式是使用订单。您需要贡献者中的列才能进行排序。或者在procedure_contributor中有一个 - 但是你需要一个连接才能对外部查询进行排序
*这是@ a_horse_with_no_name的评论!