查询以获取不为空且不匹配字符串的最新构建说明
Posted
技术标签:
【中文标题】查询以获取不为空且不匹配字符串的最新构建说明【英文标题】:Query to get the latest build notes which is not null and doesnt match a string 【发布时间】:2017-06-21 04:28:33 【问题描述】:我正在尝试从具有以下条件的数据库表“build_wiki_notes_meta”中获取 build_notes,我正在使用以下查询,它没有给出任何输出,谁能提供有关如何解决此问题的指导?出了什么问题?有更好的查询(更快)吗?
1.MAX date_created
2.匹配给定的software_product_id
3.build_notes 不是null
4.build_notes 不匹配Currently no notes for this build
查询:
select
meta_name,
build_notes
from
(
select meta_name, MAX(date_created) AS date_created, build_notes
from build_wiki_notes_meta
where software_product_id = 105
order by date_created desc
) as tmp
where (tmp.build_notes is NOT null) AND
(tmp.build_notes NOT LIKE '%Currently no notes for this build%')
数据库表:-
【问题讨论】:
【参考方案1】:您当前的查询有几个问题,除了下面给出的内容之外,我也想不出一个很好的方式来表达您的查询。您希望根据多个条件定位特定的记录组。除了这些条件之外,您还希望记录具有最新的创建日期。请注意,两条或多条记录之间可能存在最晚日期的平局。下面的查询只是使用WHERE
子句中的子查询来检查最新日期。
SELECT
meta_name,
build_notes
FROM build_wiki_notes_meta
WHERE
software_product_id = 105 AND
build_notes IS NOT NULL AND
build_notes NOT LIKE '%Currently no notes for this build%' AND
date_created = (SELECT MAX(date_created) FROM build_wiki_notes_meta
WHERE software_product_id = 105 AND
build_notes IS NOT NULL AND
build_notes NOT LIKE '%Currently no notes for this build%')
如果您确定只有一条最新记录和/或您不介意总是返回一条记录,那么我们可以将其简化为以下内容:
SELECT
meta_name,
build_notes
FROM build_wiki_notes_meta
WHERE
software_product_id = 105 AND
build_notes IS NOT NULL AND
build_notes NOT LIKE '%Currently no notes for this build%'
ORDER BY date_created DESC
LIMIT 1
【讨论】:
以上是关于查询以获取不为空且不匹配字符串的最新构建说明的主要内容,如果未能解决你的问题,请参考以下文章
Laravel/Eloquent/DB 查询 - 当为空且不为空时加入