【发布时间】:2017-01-09 16:45:33
【问题描述】:
在 MySQL(或一般的 SQL)中,是否可以生成一个预定义标识符列表,并与匹配的表数据连接?
以下表数据为例,我们称之为my_table:
id | value
---+------
1 | 'a'
3 | 'c'
现在,我有一个可能的id 值列表,并希望获得这些值的完整列表,以及上表中的连接数据。使用列表[1, 2, 3, 4],期望的结果是:
item | id | value
-----+------+------
1 | 1 | 'a'
2 | NULL | NULL
3 | 3 | 'c'
4 | NULL | NULL
显然,像SELECT * FROM my_table WHERE id IN (1, 2, 3, 4) 这样的查询只产生两行的结果(值“a”和“c”)。
对于解决方案,我正在考虑某种形式的临时表,提供完整的 id 列表 ([1, 2, 3, 4]),然后将其与表数据连接起来,例如
SELECT t1.`item`, t2.`id`, t2.`value`
FROM
...
AS t1
LEFT JOIN `my_table` AS t2 ON t2.`id` = t1.`item`
但是我该怎么做呢?
这甚至可能吗?还是真的有必要将结果与外部代码中的初始列表进行比较? (这是可能的,但在我的情况下并非微不足道,标识符不是整数)
(最终的想法是,我想从数据库中得到一个包含所有输入 id 的结果集,以便我可以轻松识别不存在的记录)
更新:我想这归结为一个问题:我怎样才能得到一个结果集,例如
id
---
1
2
3
4
来自(My)SQL 服务器没有将其作为某个表中的数据,而是通过在某些查询中设置数据?
【问题讨论】: