在其他查询中查询

时间:2016-10-30 12:55:31

标签: mysql sql

我尝试做这样的事情:

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

这是遗留代码,我无法修改此代码......

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

1 个答案:

答案 0 :(得分: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;

一些建议:在引用多个表的任何查询中使用表别名和限定列名。这样,您就不必考虑何时做正确的事情。