SQLite 动态别名

SQLite dynamic aliases

我想在 sqlite 上定义一个动态别名(以便获得最通用的 SQL 查询)。

我有两个 tables t1 和 t2

t1 结构:

id|url|type

t2 结构:

id|us|es|fr|de|nl

我的要求如下:

SELECT t1.*,us as name FROM t1 INNER JOIN t2 ON (t1.id = t2.id) ORDER BY t1.id ASC;

我想要做的是有一个别名(例如:名称)给我 t2.us 的正确值匹配 id,除非类型 id 1.

例如,我在每个 table:

中有两个条目
id|url|type
1|http://www.google.com/|0
2|file:///tmp/file.txt|1

对于 t2:

id|us|es|fr|de|nl
1|love|amar|amour|die liebe|liefde
2|sugar|azucar|sucre|zucker|suiker

我想要这样的东西:

id|url|type|name
1|http://www.google.com/|0|love
2|file:///tmp/file/txt|1|file:///tmp/file/txt

如果类型为 0,请在 t2 table 中进行研究。 如果类型为 1,只需将 "url" 字段作为名称。

真的不知道它是否清楚,以及 SQLite 是否可行。 我想避免以编程方式(在 C 中)执行此操作。

谢谢

听起来您正在寻找一个条件语句来选择要显示的列:

SELECT 
    t1.*, 
    CASE WHEN TYPE = 1 THEN url ELSE us END AS name 
FROM t1 
INNER JOIN t2 ON (t1.id = t2.id) 
ORDER BY t1.id ASC;

示例输出:

| id |                    url | type |                 name |
|----|------------------------|------|----------------------|
|  1 | http://www.google.com/ |    0 |                 love |
|  2 |   file:///tmp/file.txt |    1 | file:///tmp/file.txt |

Sample SQL Fiddle