2014-01-09 96 views
0

我知道這個問題已被問到,但我還沒有找到解決我的具體問題的可行答案。我如何從SQL中的多列中選擇不同的值?

我有一個表(在MySQL中)與4列(名,姓,帳號和組織)。在我的程序中,我想創建4個下拉列表(組合框)(每列一個)。組合框包含該列的唯一值。現在,我通過使用4個獨立的SQL查詢來完成它,然後填充每個組合框。我試圖通過執行單個查詢來獲取所有值,然後在獲得結果後將它們分離到組合框中,以查看是否有更快的方法。但我無法弄清楚如何用單個查詢來做到這一點,我嘗試了書中的每一個連接,並使用派生表和我能想到的所有東西,但沒有任何工作。

基本上我的名字組合框,需要包含表中所有不同的名字,第二個組合框包含所有不同的姓氏,第三個不同的acct。數字和第四,不同的組織在任何組合框中都沒有重複。

這是可能的,如果是怎樣?謝謝。

這是我目前在做什麼:

Select distinct firstname from t1 order by firstname; 
' populate my combo box 

Select distinct lastname from t1 order by lastname; 
; populate my combo box 

etc... 
+0

我想你可以在一個查詢中返回整個數據集,並在應用程序級別處理顯示邏輯。 – Strawberry

回答

1

你在做什麼在這裏主要是最優策略。這就是SQL的工作原理。

考慮如果您試圖同時列出所有firstnamelastname條目的輸出結果。你會得到6個不同的名字和8個不同的姓氏的行數? 6? 8? 48?

如果這太慢,您需要做的是正確地INDEX您的列,以便DISTINCT操作本身更快。

+0

謝謝,一切都相應編入索引。我只是試圖通過在一個查詢中獲得某些速度,因爲表中有468,000個條目,並且我查詢它4次。儘管編入索引,但運行所有4個查詢需要大約3秒的時間。 – user2721815

+0

聽起來像你需要緩存結果。 – tadman

相關問題