代码之家  ›  专栏  ›  技术社区  ›  Tilo Mitra

获取特定列的SQL子查询

  •  0
  • Tilo Mitra  · 技术社区  · 16 年前

    我注意到有一些类似问题的线索,我确实仔细看了一遍,但没有得到令人信服的答案。 我的问题是:

    下面的子查询返回一个包含3列的表:用户名、公司、位置。我只想在不改变内部子查询的情况下得到用户名列。我尝试了以下方法:

    SELECT username from (SELECT username, company, position FROM table1 WHERE username IN (SELECT username FROM members_network WHERE xscore <= 18 AND xscore >= 15))
    

    但是外部表没有定义。有人能告诉我如何只从子查询中检索用户名吗?

    谢谢大家!

    3 回复  |  直到 16 年前
        1
  •  2
  •   Shannon Severance    16 年前

    你不会说你在和哪个RDBMS合作。有些(如SQL Server)要求为内联视图提供表别名。很遗憾,我没有时间启动Windows VM进行复查,但您可以尝试:

    SELECT username 
    from (SELECT username, company, position 
        FROM table1 WHERE username IN 
            (SELECT username 
            FROM members_network 
            WHERE xscore <= 18 AND xscore >= 15)) T
    
        2
  •  2
  •   OMG Ponies    16 年前

    需要为子查询分配表别名:

    SELECT x.username 
      FROM (SELECT username, company, position 
              FROM table1 
             WHERE username IN (SELECT username 
                                  FROM members_network 
                                 WHERE xscore <= 18 AND xscore >= 15)) x
    

    这个 x 是表别名。

        3
  •  0
  •   Dan    16 年前

    根据注释,您似乎需要在子查询上添加别名。我还没有使用过这样的数据库,但我想有些数据库可以做到:

    SELECT username from (SELECT username, company, position FROM table1 WHERE username IN (SELECT username FROM members_network WHERE xscore <= 18 AND xscore >= 15) AS USERNAMES) AS USERDETAILS

    类似的东西应该可以工作(除非您的数据库有古怪的别名语法)。