簡體   English   中英

MySQL不同的多列

[英]mysql distinct multiple columns

我正在尋找在MySQL行集中的每一列獲取不同的行。 這些是示例表:系統表:

jcn system
1   server
1   workstation

問題表:

jcn   issue
1     "not working"

面積表:

jcn   area
1     102
1     103
1     104

我希望結果是:

system        area
server        102
workstation   103
              104

這可能嗎。 我將使用2個查詢,但是我將其放在PHP的表中,並希望該表具有這種外觀。 結果始終是:

system       area
server       102
server       103
server       104
workstation  102
workstation  103
workstation  104

此結果來自於

SELECT system, area FROM issues JOIN system USING (jcn) CROSS JOIN area USING (jcn) WHERE issues.jcn = 1

我不太確定您要做什么...

似乎您沒有試圖對系統和區域進行“配對”……在我看來,您似乎正試圖獨立獲取“系統”的所有可能值和“區域”的所有可能值。

因此,如果此假設正確,則可以在2個查詢中進行操作(一個選擇“ DISTINCT(system)”,另一個選擇“ DISTINCT(area)”),然后以2個不同的數組進行提取。 如果希望將結果合並為1個數組(如您給出的示例),則可以使用array_combine( http://php.net/manual/en/function.array-combine.php )。

您還可以保留您實際擁有的查詢,並使用鍵將結果提取到2個不同的數組中,以確保獲得“ distinct”值:

$my_systems = array();
$my_area = array();
while ($row = $query->fetch()) { // or whatever method that lets you fetch your query row by row
   $my_systems[$row['system']] = $row['system'];
   $my_areas[$row['area']] = $row['area'];
}
$merged = array_combine(array_values($my_systems), array_values($my_areas)); // if you really need this in 1 merged array.

請注意,僅在1個查詢中執行此操作將導致行數為count(distinct(system))* count(distinct(area))的結果。 使用2個單獨的查詢可能更可取。

暫無
暫無

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

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