ОШИБКА 1054 (42S22): неизвестный столбец '' в 'предложении where' - PullRequest
0 голосов
/ 09 мая 2018

Запрос MySQL получил следующую ошибку.

ОШИБКА 1054 (42S22): неизвестный столбец «scope.full_name» в «where clause»

Вот две таблицы, как показано ниже.

1.scope:

 +-----------+----------+-------------+--------------+------+----------+--------------+
    | handle_id | model_id | define_name | full_name    | name | file     | parent_scope |
    +-----------+----------+-------------+--------------+------+----------+--------------+
    |  15859248 |        0 | tb          | tb           | tb   | 12755864 |            0 |
    |  15859360 |        0 | RCA         | tb.RCA       | RCA  | 12755864 |     15859248 |
    |  15859472 |        0 | FA          | tb.RCA.x1    | x1   | 12755864 |     15859360 |
    |  15859584 |        0 | HA          | tb.RCA.x1.x1 | x1   | 12755864 |     15859472 |
    |  15859696 |        0 | HA          | tb.RCA.x1.x2 | x2   | 12755864 |     15859472 |
    |  15859808 |        0 | FA          | tb.RCA.x2    | x2   | 12755864 |     15859360 |
    |  15859920 |        0 | HA          | tb.RCA.x2.x1 | x1   | 12755864 |     15859808 |
    |  15860032 |        0 | HA          | tb.RCA.x2.x2 | x2   | 12755864 |     15859808 |
    |  15860144 |        0 | FA          | tb.RCA.x3    | x3   | 12755864 |     15859360 |
    |  15860256 |        0 | HA          | tb.RCA.x3.x1 | x1   | 12755864 |     15860144 |
    |  15860368 |        0 | HA          | tb.RCA.x3.x2 | x2   | 12755864 |     15860144 |
    |  15860480 |        0 | FA          | tb.RCA.x4    | x4   | 12755864 |     15859360 |
    |  15860592 |        0 | HA          | tb.RCA.x4.x1 | x1   | 12755864 |     15860480 |
    |  15860704 |        0 | HA          | tb.RCA.x4.x2 | x2   | 12755864 |     15860480 |
    +-----------+----------+-------------+--------------+------+----------+--------------+

2.file:

+-----------+----------+----------+----------+-------------------------------------------------------------------+------------+
| handle_id | model_id | max_time | min_time | name                                                              | scale_unit |
+-----------+----------+----------+----------+-------------------------------------------------------------------+------------+
|  12755864 |        0 |    10000 |        0 | /directory/ART.txt                                               | 1ns        |
+-----------+----------+----------+----------+-------------------------------------------------------------------+------------+

Команда запроса:

SELECT `name` FROM `file` WHERE `scope`.`full_name`='tb.RCA';

Я понимаю, что обратные кавычки в MySQL означают «разрешать пробелы и другие специальные символы (за исключением обратных кавычек, очевидно) в именах таблиц / столбцов», но даже следующая команда вызывает такую ​​же ошибку.

 SELECT name FROM file WHERE scope.full_name='tb.RCA';

Для получения дополнительной информации, версия сервера MySQL 5.7.20 в системе Linux.

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

Вы должны использовать оба стола

Попробуйте с этим

SELECT file.name FROM file,scope WHERE scope.full_name='tb.RCA';
0 голосов
/ 09 мая 2018

Чтобы сослаться на таблицу, ее нужно где-то включить в предложение FROM. Следовательно, scope не понято. Один из способов решения проблемы - использование JOIN. Однако при этом существует риск дублирования в таблице scope, влияющего на результаты.

Я думаю, что ваше настоящее намерение захвачено EXISTS:

SELECT f.name
FROM file f
WHERE EXISTS (SELECT 1 FROM scope s WHERE s.handle_id = f.file AND s.full_name = 'tb.RCA');

Обратите внимание, что обратные пометки не нужны, если вы легко называете столбцы и таблицы.

0 голосов
/ 09 мая 2018

Вам нужно присоединиться к столам, как это

SELECT f.name
FROM file f 
JOIN scope s on s.file = f.handle_id
WHERE s.full_name = 'tb.RCA'

строка JOIN scope s on s.file = f.id объединяет данные таблицы, используя столбец file из таблицы scope и столбец handle_id из таблицы file

Я связывал этот сайт много раз на такие вопросы - это отличное визуальное объяснение объединений

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