【发布时间】:2019-04-09 21:51:14
【问题描述】:
我遇到了一个涉及别名查找的 MySQL 问题。我想要一个可以查找别名的表/视图/函数/事物。我想要它在 SQL 中,因为我想使用输出来匹配任何别名的记录。
问题是我想隐含地包括所有不在表中的 ID 仅具有自身别名的琐碎情况。也就是说,给定一个 ID = 'E' 不在别名表中,返回一个别名 'E'。
少部分ID有多个Aliases,大量ID只能自己识别。
如果一个函数可以返回一个值列表,它就可以工作,但这似乎是不可能的。它可以返回一串分隔的 ID,但我没有看到如何拆分字符串并使用生成的 ID。
我无法让视图工作,因为我没有看到传递我们要查找别名的目标 ID 的方法。
例如:
AliasTbl
ID Alias
-- -----
A A
A B
A C
B A
B B
B C
C A
C B
C C
RecordTbl
ID other fields
-- ------------ ...
A foo
B bar
C zot
D other
E another
...
因此,如果 ID = 'B' 具有别名 'A'、'B'、'C',我希望返回所有三个值。 (请注意,我使用术语“别名”来包含 ID 本身。)
SELECT *
FROM RecordTbl
WHERE ID in
(SELECT Alias
FROM AliasTbl
WHERE ID = 'B');
...应该返回...
ID other fields
-- ------------ ...
A foo
B bar
C zot
对于除“A”、“B”或“C”以外的任何值...
SELECT *
FROM RecordTbl
WHERE ID in
( given any ID do some magic to return the ID as its only Alias );
所以对于 ID = 'E',返回...
ID other fields
-- ------------ ...
E another
【问题讨论】:
-
上面给出的答案看起来和这里描述的情况不一样。
标签: mysql