ERROR 1054(42S22):未知列''在' where子句'

时间:2018-05-09 10:13:09

标签: mysql sql database

MySQL查询出现以下错误。

  

ERROR 1054(42S22):未知栏' scope.full_name'在' where子句'

以下是两个表格。

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.文件:

+-----------+----------+----------+----------+-------------------------------------------------------------------+------------+
| 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';

有关更多信息,Linux系统上的MySQL服务器版本 5.7.20

3 个答案:

答案 0 :(得分:1)

你需要加入像这样的表

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

加入表格数据

我已经多次链接this website这样的问题 - 这是对连接的一个很好的视觉解释

答案 1 :(得分:1)

为了引用表,该表需要包含在某个地方的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');

请注意,如果您轻松命名列和表,则不需要反引号。

答案 2 :(得分:0)

您必须同时使用表格

试试这个

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