在以下情况下,我需要帮助。
我有两个表,第一个(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;
感谢您的帮助。
答案 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;
结果:-