2011-08-04 130 views
0

我不認爲這是可能的,但我想我會問無論如何。查詢中重複的列名稱

我有一個MySQL 5 +查詢這樣...

SELECT p.*, u.* FROM princess p JOIN unicorn u ON p.id = u.princess_id 

這是一種足以回報我所有的公主和獨角獸的)。問題是返回的結果集可能包含重複的列名(不好)。如果兩個表都有一個名爲name的列,我如何區分它而不顯式編碼別名,如p.name as 'princess_name'u.name as 'unicorn_name'

另外,我不能使用列索引,所以如果沒有更好的方法,我只需要手動編寫所有別名。

+0

「沒有顯式編碼別名」 - 別名有什麼問題?在查詢中不使用別名背後有什麼用例,特別是當列名相同時? –

+0

如果存在重複的列,則某些MySQL庫會自動將列別名添加到列名稱。但總是建議明確指定別名。 – Karolis

回答

4

SELECT *由於幾個原因,其中一個你剛剛發現是不好主意。使用明確的列列表並創建您自己的別名。

1

您必須自己手動編寫所有別名。 ;)無論如何,擺脫那些*不會是一件壞事。

1

這是不可能的,並且也儘量避免在SQL中使用*。 這是一個壞習慣。寫你的所有領域更好的可讀性和性能,不要忘記!

0

您將不得不手動編碼別名。 這很好。明確提及所有列名稱總是一個好主意。

0

如果您將行作爲數組提取,您可以依賴數據的順序。如果你將它們作爲地圖/字典獲取......你可能運氣不好。實際上,別名是一個更好的主意。

PS。明星選擇是不好的形式。

0

String query1 =「SHOW COLUMNS FROM uploadfile LIKE'」+ label +「'」; ResultSet rs = st.executeQuery(query1);

      while(rs.next()) 
          { 
         // int rs = 0; 

           pw.println("<script>alert(' throw new DuplicateName()')</script>"); 

           pw.write("Error in file insertion"+rs); 
           response.sendRedirect("AddAttribute.jsp?status='Error'"); 

          } 

           String query ="ALTER TABLE uploadfile ADD "+label+" varchar (10)"; 
           System.out.println("welcome in java "); 

           int rs1=st.executeUpdate(query); 


           response.sendRedirect("afterlabel_updatefile.jsp?status='success'"); 

          // response.sendRedirect("AdminHome.jsp");