2009-11-13 2 views
0

Я заметил, что были некоторые темы с похожими вопросами, и я просмотрел их, но на самом деле не получил убедительного ответа. Возникает вопрос:SQL SubQuery, получающий конкретный столбец

Подзапрос внизу возвращает таблицу с тремя столбцами, 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

Какая конкретная ошибка вы получаете? Это выглядит хорошо для меня. – Dan

+0

Привет, Дэн, спасибо за ваш ответ. Ошибка, которую я получаю: # 1248 - Каждая производная таблица должна иметь свой собственный псевдоним –

ответ

2

Вы не указали, с какой РСУБД вы работаете. Некоторые, например SQL Server, требуют, чтобы в представлении в виде строки был задан псевдоним таблицы. К сожалению, у меня нет времени, чтобы начать вверх окна 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

Вам нужно назначить псевдоним таблицы для подзапроса:

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 это псевдоним таблицы.

+0

Woops! Удаленные. Еще раз спасибо Пони. –

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

Нечто подобное должно работать (если база данных не имеет фанк синтаксис псевдоним).

+0

Спасибо, Dan - проблема решена! –

Смежные вопросы