SQL SubQuery获取特定列

时间:2009-11-13 05:35:38

标签: sql mysql

我注意到有一些线程有类似的问题,我确实看过它们但没有真正得到令人信服的答案。 以下是我的问题:

下面的子查询返回一个包含3列的表,USERNAME,COMPANY,POSITION。我只想在不改变子查询的情况下获取USERNAME列。我尝试了以下方法:

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

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

全部谢谢!

3 个答案:

答案 0 :(得分:2)

您没有说明您正在使用哪种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

答案 1 :(得分:2)

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

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是表别名。

答案 2 :(得分:0)

根据评论,您需要在子查询中添加别名。我还没有使用过这样做的数据库,但我猜有些人会这样做:

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

这样的事情应该有用(除非你的数据库有别致的别名语法)。