2016-10-30 152 views
0

我试图做这样的事情:查询在其他查询

SELECT 
fk_activity_id AS KeyId, 
data, 
created_on, 
(SELECT 
     data 
    FROM 
     activity_queue_data 
    WHERE 
     activity_queue_data.key = 'data' 
      AND activity_queue_data.activity_data_id = KeyId) 
FROM 
    activity_queue_data 
WHERE 
    activity_queue_data.key = 'filename' 
LIMIT 100; 

的问题,我有一个这样的表:

table description

而且信息的存储这样

table content

这是遗留代码,我不能修改此代码...

但我想在相同的查询中获取每个文件的内容和名称......任何想法......?

回答

0

如果查询你想要什么,你需要表的别名和合格的列名:

SELECT aqd.fk_activity_id AS KeyId, aqd.data, aqd.created_on, 
     (SELECT aqd2.data 
     FROM activity_queue_data aqd2 
     WHERE aqd2.key = 'data' AND 
       aqd2.activity_data_id = aqd.KeyId -- this might be backwards 
     ) as other_data 
FROM activity_queue_data aqd 
WHERE aqd.key = 'filename' 
LIMIT 100; 

一些建议:使用表别名和合格的列名在引用多个表的任何查询。这样,你不必考虑什么时候做正确的事情。

+0

我得到了这个回应'错误代码:1054.'where子句'中的未知列'aqd.KeyId' – aasanchez

+1

@aasanchez。 。 。这是一个错字。 –