+------------------+ +------------------+
| object | | example |
+------------------+ +------------------+
| id | | id |
| table_name | | ... |
| ref_id | | |
+------------------+ +------------------+
object [ id = 5, table_name = example, ref_id = 2]
example [ id = 2 ]
我有一个表,它可以表示一组对象来源于许多不同的表。 这些对象都有一个id
,引用object.ref_id
。SQL派生表结果未知列
我想从object.id
中选择原始对象(来自object.table_name
引用的表格)。为此,我试图使用下面的SQL查询。虽然这导致#1054 - Unknown column 'entity.id' in 'where clause'
。
SELECT *
FROM (
SELECT table_name
FROM object
WHERE id = 5) AS entity
WHERE entity.id = (
SELECT ref_id
FROM object
WHERE id = 5)
我在做什么错?
事例
SELECT *
FROM example
WHERE id = (
SELECT ref_id
FROM object
WHERE id = 5)
虽然,对于我的情况下,FROM子句不是如实施例那样容易,因为该值通常从object.table_name
的。 WITH TOMBOM的做法
使用从Tombom导致错误的溶液,用于测试的目的
UPDATE我已经取代在concat函数的变量。
SET @sql = CONCAT('SELECT * FROM ', 'example', ' WHERE id = ', '1');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
#1243 - Unknown prepared statement handler (stmt) given to EXECUTE
那么,有没有反馈?不是,你在找什么? – fancyPants 2013-03-11 12:33:42
我遇到一些问题。将在这个问题中发布一个更新,因为在这个评论中它不会非常易读。 – Aquillo 2013-03-11 12:36:26
虽然您的解决方案似乎根据MySQL文档有效。我不知道是什么导致我的错误。 – Aquillo 2013-03-11 12:40:30