gpt4 book ai didi

SQL Server 相当于 Oracle 多值 IN 子查询

转载 作者:行者123 更新时间:2023-12-03 03:24:14 26 4
gpt4 key购买 nike

我是 sql server 的新手,所以我真的很难在这个领域翻译我的 oracle sql。通常在 oracle sql 中,我会在“in”子句中使用两个项目,但我想这在 sql server 中可能效果不太好?

这是我的数据:

<小时/>

笔记表

a_id     |     idxno     |     note_text

1 0 text 1 for item b_id = 61
2 1 text 2 for item b_id = 61
3 0 text 1 for item b_id = 71
4 1 text 2 for item b_id = 71
5 2 text 3 for item b_id = 71
6 0 text 1 for item b_id = 81
7 0 text 1 for item b_id = 91
8 1 text 2 for item b_id = 91

notes_bridge_table

a_id     |     b_id     

1 61
2 61
3 71
4 71
5 71
6 81
7 91
8 91

(**注意:我不能保证 max(a_id) 是 Notes_table 中的 max(idxno))

项目表

b_id     |     item_desc
61 desc of item 61
71 desc of item 71
81 desc of item 81
91 desc of item 91

我的愿望是显示注释表中具有最大注释的项目的报告。所以类似:

结果

b_id     |     item_desc         |    note
61 desc of item 61 text 2 for item b_id = 61
71 desc of item 71 text 3 for item b_id = 61
81 desc of item 81 text 1 for item b_id = 61
91 desc of item 91 text 2 for item b_id = 61

我尝试过的:

select item_table.b_id, item_table.item_desc, 
from item_table, notes_bridge_table
where item_table.b_id = notes_bridge_table.b_id
and notes_bridge_table.a_id in
(select a_id from notes_table
where notes_table.a_id = notes_bridge_table.a_id
and notes_table.idxno, notes_table.a_id in
(select max(idxno), a_id from notes_table group by a_id))

但是倒数第二行“andnotes_table.idxno,notes_table.a_idin”似乎对sql server无效。

最佳答案

此查询(在 Oracle 中)

select * from t
where ( x, y ) in ( select x, y from t1 );

可以转换为在 MS-SQL 上运行的相关子查询:

select * from t
where exists (
select 1 from t1
where t1.x = t.x and t1.y = t.y
);

这是 Oracle 的演示:http://www.sqlfiddle.com/#!4/2300d/2
对于MS_SQL:http://www.sqlfiddle.com/#!3/2300d/2

关于SQL Server 相当于 Oracle 多值 IN 子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19232062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com