代码之家  ›  专栏  ›  技术社区  ›  civesuas_sine

将select插入select

  •  0
  • civesuas_sine  · 技术社区  · 8 年前

    我需要获取所选用户的用户名 party_id ,但我需要插入而不是 派对id ,我尝试嵌套子查询,但总是被括号卡住。

    我选择了这个而不是 gm.party_id 在第二个选项中选择:

    SELECT * FROM (
      select gm.party_id, sum(gm.game_out)
      from game_record gm
      where gm.party_id in (
        select cs.party_id
        from casino_users cs
        where cs.parent_id=get_party_id_from_promo(619)
      ) 
      group by party_id
      order by sum(game_out) desc
    )
    WHERE ROWNUM <= 10;
    

    我需要插入此选项:

    select username
    from casino_users
    where party_id in (
      select cs.party_id
      from casino_users cs
      where cs.parent_id=get_party_id_from_promo(619)
    )
    

    username函数也可以从中返回 派对id 但当我试图编译它时,我在第一次选择中得到了一个无效的标识符错误。

    FUNCTION get_top_ten_highscore(p_promo_code number) RETURN WEAK_CUR IS
     resault_set weak_cur;
    
    begin
    
     open resault_set for
    
         SELECT * FROM (
           select username_from_id (gm.party_id) as party_id, sum(gm.game_out)
           from game_record gm
           where gm.party_id in (
             select cs.party_id
             from casino_users cs
             where cs.parent_id=get_party_id_from_promo(619)
           ) 
           group by party_id
           order by game_out desc)
        WHERE ROWNUM <= 10;
        return  resault_set ;
    
    end get_top_ten_highscore; 
    
    2 回复  |  直到 8 年前
        1
  •  0
  •   ScaisEdge    8 年前

    你可以加入

        SELECT 
          select gm.party_id, sum(gm.game_out), cs.username
          from game_record gm
          INNER JOIN  casino_users cs ON cs.parent_id=get_party_id_from_promo(619)
          WHERE ROWNUM <= 10;
          group by gm.party_id, cs.username
          order by sum(game_out) desc
    
        2
  •  0
  •   civesuas_sine    8 年前
    SELECT * FROM (
                select (select USERNAME FROM CASINO_USERS CU WHERE CU.PARTY_ID = gm.party_id) as username, 
                sum(gm.game_out) from game_record gm 
                where  gm.party_id in (select cs.party_id from casino_users cs where cs.parent_id=load_beting_data.get_party_id_from_promo(619)
                and party_id not in (7808,7810,7817,7818,7819,7821,7824,7825,7827,7823,7830,7812,7822,7831,7826,7829,7809,7811,7820,7828)) 
                group by party_id
                order by sum(game_out)  desc
                )
        WHERE ROWNUM <= 10;