select * from A where (A.Id in (select top 1 Uid from B where B.TypeId=1 order by newId())) or (A.Id in (select top 2 Uid from B where B.TypeId=2 order by newId()));
为什么不确定 有时是3 有时是4或5或1或2 newId()每次都是不一样的 in是在这个集合里面。所以不确定 order by newId()-----------随机返回一个 补充一下 是返回行数不确定 返回的结果有时候是2/3/4/5/6行 ,应该返回3行的啊?
A.Id在表A中是否存在重复记录? 假如A表数据 ID 1 1 2 2 2 3 ...
如果你in条件筛选出来UID=1,查询结果就是2行,筛选出来UID=2,查询结构就是3行 表A: Id name 1 aa 2 bb 3 cc 4 dd 5 ee 6 ff 7 gg 9 hh 10 ii 11 jj 12 kk 13 ll 14 mm 15 nn NULL NULL 表B: typeID Uid 1 1 1 13 1 14 2 4 2 7 2 9 2 10 3 2 3 3 3 5 3 6 3 8 3 11 3 12 3 15 NULL NULL 楼主用的是slqserver数据库吧,oralce 没有top用法的;如果在oracle中,可以根据rownum 来限制,如果是随机的可以根据random来限制的; 希望大家多交流,欢迎访问我的空间. select top 1 Uid from B where B.TypeId=1 order by newId() 与 select top 2 uid from B where B.TypeId=2 order by new