Интерпретация MySQL вложенного оператора SELECT - PullRequest
1 голос
/ 20 июля 2011

Я ни в коем случае не эксперт MySQL, но после прочтения документации для оператора SELECT я не нашел ответа на свою проблему.

У меня есть это утверждение:

SELECT COUNT(*)=x.c FROM someTable, 
    (SELECT COUNT(*) c 
     FROM someTable 
     WHERE firstId <= secondId) x;

И я пытаюсь выяснить, что означает x.c в контексте запроса? В частности, что с x, который, кажется, там висит?

Я интерпретирую вложенный SELECT как SELECT COUNT(*) as c, делая псевдоним для счетчика строк как c, это то же, что и x? Зачем это псевдоним?

Спасибо!

Ответы [ 6 ]

2 голосов
/ 20 июля 2011

x - это псевдоним таблицы - имя для вложенного оператора SELECT в скобках.

COUNT(*)=x.c

- логическое условие, согласно которому общее число строк someTable будет равноколичество строк someTable, где firstId <= secondId

x.c - это имя столбца для счетчика, возвращенного подзапросом.

2 голосов
/ 20 июля 2011

x является псевдонимом подзапроса - вы заметите, что сразу после подзапроса есть x, обозначающее псевдоним для него.

2 голосов
/ 20 июля 2011

Они называют подзапрос "x", а в подзапросе они называют count (*) "c". Таким образом, «x.c» означает число, возвращаемое подзапросом.

1 голос
/ 20 июля 2011

MySQL требует, чтобы у подзапросов таблиц был уникальный псевдоним. Вы заметите, что в конце подзапроса есть x, в результате чего результаты подзапросов выглядят как исходящие из таблицы x.

В этом случае x.c во внешнем запросе означает обращение к полю c (результат подсчета) в псевдонимной таблице x, которая является подзапросом.

1 голос
/ 20 июля 2011

x - псевдоним таблицы (SELECT COUNT(*) c FROM someTable WHERE firstId <= secondId).

0 голосов
/ 20 июля 2011

X - это псевдоним для присоединенного someTable и выбора, к которому вы присоединились. Я так думаю: D

Я не угадал, парни из меня правы: P

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...