2015-05-13 5 views
1

Я использую mySQL.# 1054 - Неизвестный столбец 'ord' в 'списке полей'

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

1054 - Неизвестный столбец «ог» в «списке поля»

SELECT tkt.* , ord = 0 
      FROM tkts_follows AS t2f 
      JOIN tkts_topics AS tkt ON (t2f.tktID = tkt.id 
            AND t2f.type = 'pin' 
            AND t2f.userID = 1) 
      UNION ALL 
      SELECT * , ord = 1 
      FROM tkts_topics AS tkt 
      WHERE (1=1) AND NOT EXISTS (SELECT * 
        FROM tkts_follows AS t2f 
          WHERE t2f.tktID = tkt.id AND t2f.type = 'pin' AND t2f.userID = 1) 
          ORDER BY ord, last_update DESC LIMIT 0, 10 
+0

Что такое 'ord = 0' в списке? –

+0

новый параметр, который я использую для сортировки результатов - @AbhikChakraborty – Roi

+0

"параметр" в каком смысле – Uueerdo

ответ

1

Похоже, вы укажите его порядковый номер, и это должно быть

SELECT tkt.* , 0 as ord 
FROM tkts_follows AS t2f 
JOIN tkts_topics AS tkt ON t2f.tktID = tkt.id 
AND t2f.type = 'pin' 
AND t2f.userID = 1 
UNION ALL 
SELECT * , 1 as ord 
FROM tkts_topics AS tkt 
WHERE 1=1 AND NOT EXISTS (
SELECT 1 
FROM tkts_follows AS t2f 
WHERE t2f.tktID = tkt.id AND t2f.type = 'pin' AND t2f.userID = 1 
) 
ORDER BY ord, last_update DESC LIMIT 0, 10 
0

Это должно быть «0 AS ord» или «1 AS ord». Кроме того, при сортировке по UNION ALL я бы рекомендовал поместить все в подзапрос и заказать результаты, так как упорядочение в UNION даст вам неожиданные результаты.

SELECT 
    * 
FROM (
    SELECT 
     tkt.* 
     , 0 AS ord 
    FROM tkts_follows AS t2f 
     JOIN tkts_topics AS tkt ON t2f.tktID = tkt.id 
      AND t2f.type = 'pin' 
      AND t2f.userID = 1 
    UNION ALL 
    SELECT 
     * 
     , 1 AS ord 
    FROM tkts_topics AS tkt 
    WHERE (1=1) 
     AND NOT EXISTS (
      SELECT * 
      FROM tkts_follows AS t2f 
      WHERE t2f.tktID = tkt.id 
       AND t2f.type = 'pin' 
       AND t2f.userID = 1 
     ) 
) AS UNIONS 
ORDER BY ord, last_update DESC 
LIMIT 0, 10 
Смежные вопросы