我注意到有一些线程有类似的问题,我确实看过它们但没有真正得到令人信服的答案。 以下是我的问题:
下面的子查询返回一个包含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))
但未定义外部表。有人能告诉我如何只从子查询中检索用户名吗?
全部谢谢!
答案 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
这样的事情应该有用(除非你的数据库有别致的别名语法)。