簡體   English   中英

sqlite - 連接不同行中的兩個值

[英]sqlite - concatenate two values from different rows

我有2個表看起來像這樣:

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
)

元表是一個像表一樣的“eav”。

現在我想選擇所有具有“lat”和“lng”屬性的記錄,並在結果中用空格連接lat“和”lng“

這是我目前的查詢

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

它似乎有效。 但這真的是對的嗎? 我可以使用一次加入嗎?

單引號,指定您的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';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM