我有2张桌子。一个名为DocumentStatistics的文档称为Documents。 DocumentStatistics有一个名为filename的字段,其中包含一个文件名,例如abcdef。另一方面,文档具有类似的命名方案,但因为它还包含旧文件,所以它们被编号(例如,它可能具有abcdef1和abcdef2)。只有最新的文档会被标记为islive = -1。
我想显示DocumentStatistics中的数据以及Documents表中的正确单元格。 有人能帮我吗?这就是我到目前为止所做的:
SELECT DocumentStatistics.*,Documents.tmpname
FROM DocumentStatistics
INNER JOIN Documents
ON DocumentStatistics.filename LIKE 'Documents.filename%'
WHERE Documents.islive=-1
答案 0 :(得分:1)
like
没问题。你只需要正确调用它:
SELECT ds.*, d.tmpname
FROM DocumentStatistics ds INNER JOIN
Documents d
ON ds.filename LIKE CONCAT(d.filename, '%')
WHERE d.islive = -1;
您的版本使用常量字符串调用它,而不是列名称。
我在查询中添加了表别名。它们使查询更容易编写和阅读。
答案 1 :(得分:0)
也许你可以用SUBSTRING做到这一点。像这样:
SELECT DocumentStatistics.*,Documents.tmpname
FROM DocumentStatistics
LEFT JOIN Documents
ON SUBSTRING(DocumentStatistics.filename,start,length)= SUBSTRING(Documents.filename,start,length)
WHERE Documents.islive=-1