我有一张看起来像的桌子
id | package | env | key | value
int | varchar | varchar | varchar | varchar
这是为了存储配置,所以在env所在的数据库中会存在一行null
env
但是同一行可能会以不同的值再次出现(不同的 id 作为自动增量) 。
我想要做的是获取所有行where package = 'something'
和env is null
,但是如果存在相同的行package
,key
然后env = 'something_else
我想返回该行而不是行 where env is null
。
所以,鉴于这些数据
1 | something | null | title | a default title
2 | something | testing | title | a testing title
3 | something | development | title | a development title
4 | something | null | byline | a default byline
5 | another | null | title | another default title
6 | another | testing | title | another testing title
如果我使用 packagesomething
和 envtesting
我想要返回的行是
2 | something | testing | title | a testing title
4 | something | null | byline | a default byline
我可以运行两个查询,一个是获取所有行在哪里package = something
,env is null
然后是另一个查询在哪里package = something
,env = testing
然后将第二个结果合并到第一个,但我希望有一种方法可以用一个查询来做到这一点?