SQL 使用 LIKE 和 WHERE 进行内部联接
SQL INNER JOIN with LIKE and a WHERE
我有 2 个 table。一种称为 DocumentStatistics,一种称为 Documents。 DocumentStatistics 有一个名为 filename 的字段,其中包含一个文件名,例如 abcdef。另一方面,Documents 具有类似的命名方案,但因为它也包含旧文件,所以它们被编号(例如它可能有 abcdef1 和 abcdef2)。只有最新的文档才会被标记为 islive=-1.
我想显示来自 DocumentStatistics 的数据以及来自文档 table 的正确单元格。
有人能帮我吗?这是我目前所拥有的:
SELECT DocumentStatistics.*,Documents.tmpname
FROM DocumentStatistics
INNER JOIN Documents
ON DocumentStatistics.filename LIKE 'Documents.filename%'
WHERE Documents.islive=-1
也许您可以使用 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
like
没问题。你只需要正确调用它:
SELECT ds.*, d.tmpname
FROM DocumentStatistics ds INNER JOIN
Documents d
ON ds.filename LIKE CONCAT(d.filename, '%')
WHERE d.islive = -1;
您的版本使用常量字符串而不是列名称调用它。
我在查询中添加了 table 个别名。它们使查询更易于编写和阅读。
我有 2 个 table。一种称为 DocumentStatistics,一种称为 Documents。 DocumentStatistics 有一个名为 filename 的字段,其中包含一个文件名,例如 abcdef。另一方面,Documents 具有类似的命名方案,但因为它也包含旧文件,所以它们被编号(例如它可能有 abcdef1 和 abcdef2)。只有最新的文档才会被标记为 islive=-1.
我想显示来自 DocumentStatistics 的数据以及来自文档 table 的正确单元格。 有人能帮我吗?这是我目前所拥有的:
SELECT DocumentStatistics.*,Documents.tmpname
FROM DocumentStatistics
INNER JOIN Documents
ON DocumentStatistics.filename LIKE 'Documents.filename%'
WHERE Documents.islive=-1
也许您可以使用 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
like
没问题。你只需要正确调用它:
SELECT ds.*, d.tmpname
FROM DocumentStatistics ds INNER JOIN
Documents d
ON ds.filename LIKE CONCAT(d.filename, '%')
WHERE d.islive = -1;
您的版本使用常量字符串而不是列名称调用它。
我在查询中添加了 table 个别名。它们使查询更易于编写和阅读。