查询中重复的列名称

时间:2011-08-04 15:43:02

标签: mysql sql

我认为这不可能,但我想我还是会问。

我有一个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'等别名的情况下对其进行区分?

另外,我不能使用列索引,所以如果没有更好的方法,我只需自己编写所有别名代码。

6 个答案:

答案 0 :(得分:4)

SELECT *有几个原因是个坏主意,其中一个原因就是你刚才找到的。使用显式列列表并创建自己的别名。

答案 1 :(得分:1)

您必须亲自手动编写所有别名代码。 ;)无论如何,摆脱那些*并不是一件坏事。

答案 2 :(得分:1)

这是不可能的,并且还尝试避免在SQL中使用*。 这是一个坏习惯。编写所有字段对于可读性和性能更好,不要忘记!

答案 3 :(得分:0)

您必须手动编码别名。 这很好。明确提及所有列名称总是一个好主意。

答案 4 :(得分:0)

如果您将行作为数组获取,则可以依赖于数据的顺序。如果你把它们作为地图/字典取出......你可能运气不好。实际上,混叠是一个更好的主意。

PS。明星选择是不好的形式。

答案 5 :(得分: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");