我尝试做这样的事情:
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;
问题我有这样一个表:
信息存储就像这样
这是遗留代码,我无法修改此代码......
但是我想在同一个查询中获取每个文件的内容和名称......任何想法...... ???
答案 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;
一些建议:在引用多个表的任何查询中使用表别名和限定列名。这样,您就不必考虑何时做正确的事情。