http://sqlfiddle.com/#!9/aef5ce/7
该示例对表运行 2 个查询。请求是一样的,不同的只是条件中的format_id值。
在第一个中,我们正在寻找 format_id = 999(不在表中)或 NULL,在第二个中,我们正在寻找 format = 1(在表中)或 NULL。
我们如何转换这些查询,以便如果我们在表中设置现有的 format_id,只返回带有它的行(NULL 被忽略)。如果这不存在,那么 format_id = NULL 的数据被相应地拖动。
一般来说,我想用给定的 format_id = 1 返回(3 行而不是 6 行)
100 1 20
200 1 40
300 1 60
给定 format_id = 999(或任何其他不存在的值),现在作为第一个查询的结果显示在示例中的结果被返回(即 format_id = null 的行的值)。
小提琴
在 5.6 上?好吧,除了这样:
小提琴
虽然不会有太大的影响...
并且没有子查询 - 无论如何。
在sqlfiddle.com进行测试