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