2013-04-21 25 views
1

在SQL Server中,我可以在Cursor的幫助下完成此操作(循環遍歷結果集中的每一行並構建我的字符串)。但我不知道如何在SQLite中做同樣的事情,這個任務不像所謂的Pivoting,就我所知,我們必須知道我們想要轉向列的確切行。我的情況是不同的,我想選擇一個指定列的所有值到一個字符串(然後可以選擇爲1行的列),該列可以有不同的值取決於SELECT查詢。這裏是它的外觀示例:將列中的所有值選擇到SQLite中的字符串中?

A | B  
------------ 
1 | 0 
8 | 1 
3 | 2 
...  .... 

我要選擇A列的所有值成這樣一個字符串「183 ......」(或「1,8,3,... 「會沒事的)。

這可以用作另一個SELECT中的列,我必須實現這一點,因爲我需要在另一行中將所有子信息(在列A的每一行上)顯示爲以逗號分隔的列表。我對此沒有任何想法,它似乎需要一些程序語句(例如放置在一個過程中),但SQLite限制了我如何處理循環,變量聲明,...我是真的卡住了。編程數據庫時這種任務非常普遍,我沒有理由拒絕這樣做。

請幫助,您的幫助將不勝感激!謝謝!

+0

你想要的結果是什麼?只有1,8,3? – sgeddes 2013-04-21 14:31:01

回答

10

如果你只是想從A列中的所有值到一個單一的記錄,然後使用GROUP_CONCAT

select group_concat(a, ',') 
from yourtable 

SQL Fiddle Demo

+0

這正是我想要的,非常感謝。我沒有想過它比SQL Server更簡單。 :) – 2013-04-21 14:56:53

+0

有沒有辦法使用group_concat()的順序?我的意思是我想改變逗號分隔列表中值的順序。謝謝! – 2013-04-21 15:08:22

+0

@KingKing - 看到這篇文章 - 你需要使用一個子查詢:http://stackoverflow.com/questions/1897352/sqlite-group-concat-ordering - 最好的問候 – sgeddes 2013-04-21 16:44:47

0

的主要問題是,你是這樣想的應用程序員。 SQL爲你做了很多事情。

SELECT * 
    FROM tableA 
WHERE A IN (SELECT A 
        FROM tableB) 

無需訴諸遊標,存儲過程和多個查詢。

+0

我不明白你的問題,A.id是什麼? A是一個列而不是表格。謝謝。 – 2013-04-21 14:58:19

相關問題