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 。
答案 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';