[英]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.