mysql - 需要查询逻辑方面的帮助

标签 mysql join substring

我陷入了这个问题,并且不太确定应该如何提出查询。

我有两张表,一张包含文章,一张包含所谓的ATC 代码

ATC 代码如下所示:N02AA59。这是由 7 个字符组成的完整代码。最后一个字符之前的每个字符都是一个特定的类别。因此N02A也是一个ATC代码。

现在我的文章表远非包含所有 ATC 代码。 我想要实现的是在自动完成中使用的结果集,以这种方式,所有带子字符串的 ATC 代码(字符 1-6)都应该是结果集的一部分,当且仅当它们导致文章的 ATC 代码以我的文章表中的这些字符开头。

例如,如果我在自动完成中输入“N02A”,则应成为结果集一部分的项目都是以“N02A”开头的 ATC 代码,因为我们有一篇文章的 ATC 代码为“N02AA59” ”。

这是基本查询,但正如您可能猜到的那样,它仅返回 7 个字符的 ATC 代码,因为我的文章表中不存在更短的 ATC 代码:

SELECT _atc_codes.code, _atc_codes.name
FROM articles
JOIN _atc_codes
ON (_atc_codes.code LIKE 'N02A%' AND _atc_codes.id = articles.atc_code)

整个查询有一个转折。第二列(相应的名称字段)必须是生成的 ATC 代码的字段。因此,如果我搜索“N02A”,这并不意味着每个项目都应该具有 ATC 代码“N02A”的名称。

最佳答案

根据您问题中的详细信息,我假设您有两个表。
表 1:_atc_codes,其中包含字段 codename>(可能更多)。
表 2:包含字段 atc_codearticles 以及包括 article 在内的其他字段(不为空) .
我用这些最少的信息进行了测试,除了一个小错误之外,您的查询有效。 在查询行 ON (_atc_codes.code LIKE 'N02A%' AND _atc_codes.id =articles.atc_code) 中,您将 _atc_codes.idarticles.atc_code 进行比较
它应该是 _atc_codes.code 而不是 _atc_codes.id

如果有关于 _atc_codes.id< 的其他详细信息,请发表评论/strong> 原始帖子中缺少该内容,或者如果我弄错了。

关于mysql - 需要查询逻辑方面的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20262748/

相关文章:

sql-server - SQL Server 基于最近值连接两个表

MYSQL LEFT JOIN 结果与表?

java - 从两个类内部加入 hibernate

vba - 从文本中提取姓名

mysql - MySQL中如何仅当两个查询的减法大于0时才在查询中返回值

mysql计算答案放入空列

mysql - 加入多个外键

MySQL查询以选择全部或部分搜索字符串

python - 使用子字符串列表搜索字符串列表

java - 在java中对中间字符进行子串