簡體   English   中英

如何為此場景編寫SQL查詢?

[英]How to write SQL query for this Scenario?

一位采訪者問我這個問題,給你兩個表,其中列為L1,T1為表1,T為表2的名稱。 編寫SQL查詢以獲得所需的結果。 在此輸入圖像描述

我仍然堅持如何編寫查詢以獲得所需的輸出。

使用此表, SELECT table1.L1, table2.Name FROM table1 INNER JOIN table2 on table1.T1 = table2.T; 但這樣它就不會為Name wrt L1輸出CONCAT。

感謝您提前幫助。

您需要一個aggegation函數作為GROUP_CONCAT來獲取name的逗號分隔結果

  SELECT table1.L1,GROUP_CONCAT( table2.Name ORDER BY table2.Name ASC SEPARATOR ',')
  FROM table1 
  INNER JOIN table2 on table1.T1 = table2.T
  GROUP BY table1.L1 
  ORDER BY FIELD(table1.L1,'X','Y','Z')

withou aggegation函數你得到分隔行的結果..而不是group_concat的group你獲得與同一行上的一個l1相關的所有名稱

您使用JOIN (內部聯接)加入兩個表。 然后使用GROUP BY獲取聚合數據,最后使用GROUP_CONCAT函數來實現逗號分隔的名稱。 見下文:

SELECT table1.l1, GROUP_CONCAT(table2.name) 
FROM table1 
JOIN table2 ON table1.t1 = table2.t 
GROUP BY table1.l1

使用此查詢

SELECT table1.L1, GROUP_CONCAT(table2.name separator ', ')
FROM table1 AS table1
INNER JOIN table2 as table2 ON table1.T1 = table2.t
GROUP BY table1.L1

SQL小提琴在這里測試它http://sqlfiddle.com/#!9/3ac3a3/1/0

這個sql會得到結果。

SELECT L1, GROUP_CONCAT(name) from Table1 INNER JOIN Table2 on T1 = T GROUP BY L1

暫無
暫無

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

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