SQLite:合并从选择返回的两列

时间:2018-10-09 17:00:22

标签: sqlite

在以下情况下,我需要帮助。

我有两个表,第一个(TableA)是一个人的名单,第二个(TableB)是一个城市的名单。

TableA有一个名为city_id的列,该列引用TableB中的ID。

我正在使用以下查询:

SELECT TableA.name,TableB.city,TableB.state FROM TableA LEFT JOIN TableB ON TableA.city_id=TableB.id;

结果查询包含三列:名称,城市,州。

是否可以仅获得2列:名称,城市+州?

我没有运气就尝试了以下方法:

SELECT TableA.name,(`TableB.city` || ' ' || `TableB.state`) FROM TableA LEFT JOIN TableB ON TableA.city_id=TableB.id;

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您的问题是,通过将TableB.city包含在`中,您说该列称为TableB.city(即TableB部分成为列名的一部分),而该列将不会找到(对于TableB.state同样如此)。

因此解决方法是不要将表和列包含在`中。

以下应该可以工作:-

SELECT TABLEA.name,TableB.city||' '||TableB.state FROM TableA JOIN TableB ON TableA.city_id = TableB.id;

完整示例:-

DROP TABLE IF EXISTS TableA;
DROP TABLE If EXISTS TableB;
CREATE TABLE IF NOT EXISTS TableA (id INTEGER PRIMARY KEY, name TEXT, city_id INTEGER);
CREATE TABLE IF NOT EXISTS TableB (id INTEGER PRIMARY KEY, city TEXT, state TEXT);
INSERT INTO TableB (city,state) VALUES ('Miami','Florida'),('Dallas','Texas');
INSERT INTO TableA (name,city_id) VALUES ('Fred',2),('Mary',1),('Tom',1),('Susan',2);
SELECT TABLEA.name,TableB.city||' '||TableB.state FROM TableA JOIN TableB ON TableA.city_id = TableB.id;

结果:-

enter image description here