MySQL - 将第一个查询结果合并到第二个查询的列中
问题描述:
我有两个MySQL表,我想知道是否有任何方法来合并第一个查询的结果,以便它们在第二个查询中显示为列查询。下面是一个例子:MySQL - 将第一个查询结果合并到第二个查询的列中
表1
FolderTable
ID NAME PATH
1 c:
2 tmp 1
3 test 1,2
SELECT name FROM FolderTable WHERE id IN (1, 2, 3)
Result:
c:
tmp
test
表2
ImageTable
ID NAME FOLDER_ID
1 hi.jpg 3
2 blah.jpg 3
3 overwlow.jpg 3
SELECT name FROM ImageTable WHERE id = 2
Result:
NAME
blah.jpg
我想:
Result:
NAME PATH
blah.jpg c:\tmp\test
如何编写合并的输出一个QUERTY首先查询到由“\”分隔的第二个查询的PATH列中?这可能吗?
答
SELECT name,
SELECT GROUP_CONCAT(name ORDER BY ID SEPARATOR '\')
FROM FolderTable
WHERE id BETWEEN (SELECT MAX(ID)
FROM FolderTable
WHERE ID < ImageTable.FOLDER_ID
AND PATH IS NULL)
AND ImageTable.FOLDER_ID
FROM ImageTable WHERE id = 2
答
查找到INNER JOIN
SELECT
FolderTable.Name AS FolderName, ImageTable.Name AS ImageName
FROM
FolderTable
INNER JOIN
ImageTable ON ImageTable.FolderId = FolderTable.ID
您可以连接字段连同 “\”,如果你想
尼斯。如果我将“3”切换到ImageTable.folderId,我就快到了。但是,如何将“1,2”切换到FolderTable.path? – GuruMeditation 2011-04-07 12:35:35
我还没有看到'FOLDER_ID'...我想FolderTable中的文件夹路径以'ImageTable.FOLDER_ID'结尾,并且以最近的null PATH' ImageTable.FOLDER_ID'开始? – manji 2011-04-07 12:49:04