我想在sqlite上定义动态别名(为了获得最通用的SQL查询)。
我有两张桌子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;
我想要做的是,有一个别名(例如:name)给我正确的t2.us值与id匹配,除非类型为id。
例如,我在每个表中都有两个条目:
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
如果type为0,请在t2表中进行研究。 如果type为1,只需输入" url"字段作为名称。
不知道它是否清楚,以及SQLite是否可行。 我想以编程方式避免这样做(在C中)。
由于
答案 0 :(得分:1)
听起来你正在寻找一个条件语句来选择要显示的列:
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 |