sqlite - 连接不同行中的两个值

时间:2016-10-14 11:04:41

标签: sql sqlite join concatenation

我有两个看起来像这样的表:

Math.Round(value, 2)

元表是一个“eav”表。

现在我要选择所有具有“lat”和“lng”属性的记录,并在结果中用空格加入lat“和”lng“

这是我当前的查询

CREATE TABLE places(
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  type TEXT
  ...  
)

CREATE TABLE meta(
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  place INTEGER NOT NULL,
  key TEXT NOT NULL,
  value TEXT,
  FOREIGN KEY(place) REFERENCES places(id) ON DELETE CASCADE
)

它似乎有效。但这真的是对的吗?我可以使用一次加入吗?

1 个答案:

答案 0 :(得分:0)

单引号,指定您的JOIN类型,但您的条件只是查找来自p.type的单个结果,因此请使用=而不是IN

SELECT p.id, m1.value || ' ' || m2.value 
FROM places p 
INNER JOIN meta m1 ON m1.place = p.id 
INNER JOIN meta m2 ON m2.place = p.id 
WHERE p.type = '1'
AND m1.key = 'lat'
AND m2.key = 'lng';