2016-02-08 3 views
-2

Вот мой MySQL Синтаксис:Каждых Производная таблица должна иметь свой собственный псевдоним

SELECT f1.id 
FROM 
    (SELECT f1.id, 
      count(*) AS c1 
    FROM (friend AS f1 
     JOIN friend AS f2 ON (f1.fid=f2.fid 
           AND f1.id!=f2.id 
           AND f2.id=12345 
           AND f1.id!=12345))) 
WHERE c1>= 
    (SELECT count(*) 
    FROM friend AS f3 
    WHERE f3.id=12345); 

Я не могу показаться, чтобы выяснить, где это проблема, я попытался альясинг внутренних таблиц результатов, но они, кажется, возвращают ошибку ! Мне нужны рекомендации.

+0

Не могли бы вы вывести сообщение об ошибке? –

+0

Да, когда я перечислил таблицу результатов, используемую во втором, она говорит ** Неизвестный столбец f1.id (Третья строка) в «списке полей» ** –

+0

Это другое сообщение об ошибке. – Strawberry

ответ

2

Избавьтесь от посторонние скобки и форматировать ваш запрос немного, чтобы иметь более чистый вид:

SELECT t.id 
FROM (SELECT f1.id,count(*) AS c1 
     FROM friend AS f1 
     JOIN friend AS f2 
     ON f1.fid=f2.fid AND 
      f1.id!=f2.id AND 
      f2.id=12345 AND 
      f1.id!=12345) AS t -- <-- Alias needed here! 
WHERE c1>=(SELECT count(*) FROM friend as f3 WHERE f3.id=12345) 

Если форматировать, как и выше, то вы поймете, что производная таблица запроса отсутствует псевдоним ,

Кроме того, поле, выбранное внешним запросом, то есть id, должно быть префиксным с использованием псевдонима производной таблицы, то есть t.

+0

Я сделал именно то, что вы сказали уже, он показывает сообщение об ошибке: ** Неизвестный столбец t.id в 'списке полей' ** –

+0

Извините! Это сработало, я запутал f1.id первой и второй строк :) –

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