精华内容
下载资源
问答
  • Mysql字段别名
    2021-01-25 22:17:13

    select column1+10 as c1,c1+10 as c2 from table1;

    想实现上面的效果,结果在mysql里面报错了,提示找不到c1这个列;

    -- 不同的 数据库不一样

    一般不支持在select中继续使用别名 或者where语句中使用

    如果是在要用 可以尝试是否支持:

    select column1+10 as c1,(select c1)+10 as c2 from table1;

    但是在orderby groupby 可以使用

    ---一些解释参考

    https://stackoverflow.com/questions/16715504/mysql-define-a-variable-within-select-and-use-it-within-the-same-select/16715618#16715618

    https://stackoverflow.com/questions/6081436/how-to-use-alias-as-field-in-mysql

    mysql中的SQL语句执行是有一定顺序的,如下:

    1. from

    2. on

    3. join

    4. where

    5. group by

    6. with

    7. having

    8. select

    9. distinct

    10. order by

    11. limit

    一条SQL会经过这11步的,中间的每一步都会生成一张虚拟表,后面的步骤都是在上一张虚拟表中进行筛选与查询的,下面假设,经过了7步也就是经过了having这一步,生成的虚拟表假设为:

    id column1 column2 alias(having后的别名)

    1 10 10 aaa

    2 20 20 bbb

    现在到了SELECT这一步的时候,你的查询字段为 column1+10 as c1, 那么sql解析器在这个虚拟表中可以找到column1这个字段,那么计算和设置别名成功, 现在你要c1+10,它发现这个虚拟表中不存在这个字段,那么就会报错,如果你想这样做:alias as xxx, 那么也不会报错,因为having筛选过后,这个别名字段已经在虚拟表中了,所以其实道理很简单,select的执行顺序是排在第8步的,而select是针对以上几步生成的虚拟表进行操作的,所以你所要使用的字段,如果虚拟表中不存在,那么则会报错,如果楼主的那句SQL硬要执行的话,也只能改成select column1+10 as c1,column1+10+10 as c2 from table1;

    更多相关内容
  • SQL 字段别名同本文前文讲述的表别名一样,SQL(MySQL) 也支持对表的字段(列)设置别名。字段别名语法:SELECT column AS column_alias FROM table字段别名使用例子字段别名一个明显的效果是可以自定义查询数据返回的...

    SQL 字段别名

    同本文前文讲述的表别名一样,SQL(MySQL) 也支持对表的字段(列)设置别名。

    字段别名语法:

    SELECT column AS column_alias FROM table

    字段别名使用例子

    字段别名一个明显的效果是可以自定义查询数据返回的字段名。如下面的表数据:

    user 用户表:

    uid

    username

    password

    email

    regdate

    1

    admin

    b7e591c246d010bb2ccd77d52490c85e

    admin@5idev.com

    1277992339

    2

    小明

    a193686a53e4de85ee3f2ff0576adf01

    xiao@163.com

    1278063917

    3

    Jack

    0193686a35e4de85ee3f2ff0567adf490

    jack@gmail.com

    1278061380

    在查询的时候,对 username 字段使用别名:

    SELECT username AS name,email FROM user

    返回查询结果如下:

    name

    email

    admin

    admin@5idev.com

    小明

    xiao@163.com

    Jack

    jack@gmail.com

    当然如此简单的定义字段的别名是没有太大实际意义的,字段别名更多的意义是解决字段名的重复,如一个表字段被查询两次或更多次时:

    SELECT username AS name,username,email FROM user

    或者两个及更多表进行查询,有相同的返回字段时:

    article 文章表:

    aid

    title

    content

    uid

    pubtime

    1

    文章1

    文章1正文内容...

    1

    1278982219

    2

    文章2

    文章2正文内容...

    1

    1278985319

    3

    文章3

    文章3正文内容...

    2

    1279185319

    user 用户表:

    uid

    username

    title

    password

    email

    regdate

    1

    admin

    管理员

    b7e591c246d010bb2ccd77d52490c85e

    admin@5idev.com

    1277992339

    2

    小明

    观察者

    a193686a53e4de85ee3f2ff0576adf01

    xiao@163.com

    1278063917

    3

    Jack

    叫我老外

    0193686a35e4de85ee3f2ff0567adf490

    jack@gmail.com

    1278061380

    上面两个表都定义了 title 字段且都需要返回该字段数据时,就需要定义字段别名(至少定义一个):

    SELECT a.title AS atitle,u.username,u.title AS utitle FROM article AS a, user AS u where a.uid=u.uid

    返回查询结果如下:

    atitle

    username

    utitle

    文章1

    admin

    管理员

    文章2

    admin

    管理员

    文章3

    小明

    观察者

    可以看出,当查询返回的字段名称相同时,可以通过定义别名来避免冲突,上面查询的例子同时定义了字段别名与表别名。

    提示

    通常,定义字段别名的 AS 关键字可以省略,即下面两句 SQL 效果一致:

    SELECT username AS name FROM user

    SELECT username name FROM user

    但我们建议不要省略 AS 关键字。

    别名(alias)是 SQL 的标准语法,几乎所有的数据库系统都支持。在处理一些复杂的查询时,可以合理的定义表和字段别名来使 SQL 语句看起来更加精简易读,也避免查询返回相同字段数据时的冲突。

    展开全文
  • 主要介绍了MySQL中使用表别名与字段别名的基本教程,利用SELECT语句和AS子句进行取别名的操作,需要的朋友可以参考下
  • MySQL别名(Alias)SQL 表别名在 SQL 语句中,可以为表名称及字段(列)名称指定别名(Alias),别名是 SQL 标准语法,几乎所有的数据库系统都支持。通过关键字 AS 来指定。表别名语法:SELECT column FROM table AS ...

    MySQL 表别名(Alias)SQL 表别名

    在 SQL 语句中,可以为表名称及字段(列)名称指定别名(Alias),别名是 SQL 标准语法,几乎所有的数据库系统都支持。通过关键字 AS 来指定。

    表别名语法:

    SELECT column FROM table AS table_alias

    上述 SQL 执行后的效果,给人感觉是对 table_alias 表进行查询,但实际上对单表做简单的别名查询通常是无意义的。一般是对一个表要当作多个表来操作,或者是对多个表进行操作时,才设置表别名。

    表别名使用例子

    下面是一个简单的多表操作的例子:

    article 文章表:

    1453109631Z620-53N7.jpg

    user 用户表:

    1453109631Z620-DH9.jpg

    当查询一篇文章的时候,一般会同时将对应的文章作者查询出来,通常的 SQL 语句为:

    SELECT article.title,article.content,user.username FROM article, user

    WHERE article.aid=1 AND article.uid=user.uid

    设置表别名后:

    SELECT a.title,a.content,u.username FROM article AS a, user AS u where a.aid=1 and a.uid=u.uid

    上述两条 SQL 语句查询结果是一样的:

    1453109631921Z-K237.jpg

    可以看出,使用表别名查询,可以使 SQL 变得简洁而更易书写和阅读,尤其在 SQL 比较复杂的情况下。除了使用别名来简化 SQL 外,有些时候例如一个表做自身关联时,必须要使用别名来当作两个表进行关联操作。

    MySQL 字段别名(列别名)SQL 字段别名

    同本文前文讲述的表别名一样,SQL(MySQL) 也支持对表的字段(列)设置别名。

    字段别名语法:

    SELECT column AS column_alias FROM table

    字段别名使用例子

    字段别名一个明显的效果是可以自定义查询数据返回的字段名。如下面的表数据:

    user 用户表:

    1453109631921Z-TZ5.jpg

    在查询的时候,对 username 字段使用别名:

    SELECT username AS name,email FROM user

    返回查询结果如下:

    1453109631921Z-945I.jpg

    当然如此简单的定义字段的别名是没有太大实际意义的,字段别名更多的意义是解决字段名的重复,如一个表字段被查询两次或更多次时:

    SELECT username AS name,username,email FROM user

    或者两个及更多表进行查询,有相同的返回字段时:

    article 文章表:

    1453109631921Z-1012Y.jpg

    user 用户表:

    145310963193K0-114494.jpg

    上面两个表都定义了 title 字段且都需要返回该字段数据时,就需要定义字段别名(至少定义一个):

    SELECT a.title AS atitle,u.username,u.title AS utitle FROM article AS a, user AS u where a.uid=u.uid

    返回查询结果如下:

    145310963193K0-12c52.jpg

    可以看出,当查询返回的字段名称相同时,可以通过定义别名来避免冲突,上面查询的例子同时定义了字段别名与表别名。

    提示

    通常,定义字段别名的 AS 关键字可以省略,即下面两句 SQL 效果一致:

    SELECT username AS name FROM user

    SELECT username name FROM user

    但我们建议不要省略 AS 关键字。

    别名(alias)是 SQL 的标准语法,几乎所有的数据库系统都支持。在处理一些复杂的查询时,可以合理的定义表和字段别名来使 SQL 语句看起来更加精简易读,也避免查询返回相同字段数据时的冲突。

    本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

    本文系统来源:php中文网

    展开全文
  • 怎样解决无法获取MYSQL字段别名问题

    千次阅读 2016-11-30 19:10:11
    润乾V4 润乾报表 无法获取MYSQL字段别名

    有客户通过润乾报表连接mysql数据库,数据集语法使用了别名(例如select id as testid from test),但是在报表中无法通过别名获取值。

    通过jdbc直连测试各版本jdbc驱动测试,程序如下,

    <%

    try

    {

    String driverName="com.mysql.jdbc.Driver";

    String userName="root";

    String userPasswd="";

    String dbName="test";

    String tableName="user";

    String url="jdbc:mysql://localhost:3306/"+dbName+"?user="+userName+"&password="+userPasswd;

    Class.forName("com.mysql.jdbc.Driver").newInstance();

    Connection conn=DriverManager.getConnection(url);

    String sql="select id as testid from num";

    Statement stmt=conn.createStatement();

    ResultSet rs=stmt.executeQuery(sql);

    ResultSetMetaData   rsmd   =   rs.getMetaData();

    String colname= rsmd.getColumnName(1) ;

    String colname1= rsmd.getColumnLabel(1) ;

    System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaa="+colname);

    System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaa="+colname1);

    while(rs.next())

    {

    %>

    <tr>

       <td><%=rs.getInt("testid")%></td>

    </tr>

    <%

    }

    rs.close();

    stmt.close();

    conn.close();

    }

    catch(Exception e)

    {

    e.printStackTrace();

    }

    %>,

    发现使用jdbc5.1.x系列驱动getColumnName获取的不是别名。

    使用润乾报表连接mysql数据库时如果用到别名,可以通过使用5.0.x系列及以下驱动解决不能获取别名的问题。

    附jdbc驱动与Mysql版本对应关系:

    Connector/J 5.1 支持Mysql 4.1、Mysql 5.0、Mysql 5.1、Mysql 6.0 alpha这些版本。

    Connector/J 5.0 支持MySQL 4.1、MySQL 5.0 servers、distributed transaction (XA)。

    Connector/J 3.1 支持MySQL 4.1、MySQL 5.0 servers、MySQL 5.0 except distributed transaction (XA) support。

    Connector/J 3.0 支持MySQL 3.x or MySQL 4.1。

    展开全文
  • MySQL查询函数---为表和字段别名

    千次阅读 2021-01-25 21:59:21
    (1)为表取别名(2)为字段别名(1)为表取别名当表名字很长或者执行一些特殊查询时,为了方便操作或者需要多次使用相同的表时,可以为表指定别名,用这个别名代替原来的名称。为表取别名的基本语法格式为:表名 [as] ...
  • MySQL中使用表别名与字段别名

    万次阅读 2018-10-07 14:08:24
    MySQL别名(Alias) SQL 表别名 在 SQL 语句中,可以为表名称及字段(列)名称指定别名(Alias),别名是 SQL 标准语法,几乎所有的数据库系统都支持。通过关键字 AS 来指定。 表别名语法: SELECT column FROM ...
  • MySQL列名太长,查询太麻烦怎么办?给列起一个简短的别名吧,本篇文章手把手地教你MySQL给列(字段)起别名的三种方式。希望对你有帮助~
  • MySQL 是不支持这种骚操作的 比如 哪我就是想用怎么办,那就用套娃来实现嘿嘿
  • 主要介绍了MySQL Union合并查询数据及表别名、字段别名用法,结合实例形式较为详细的分析了mysql使用Union合并连接查询数据以及使用as实现表别名与字段别名操作,需要的朋友可以参考下
  • mysql> select * from department; +------+-----------+--------------+-------------+ | d_id | d_name | function_ | address | +------+-----------+--------------+-------------+ | 1001 | 科研部 | 研发...
  • mysql中计算字段别名

    千次阅读 2019-08-14 18:12:46
    计算字段 概念 经过计算的字段 来由 从数据库中直接取出来的数据总是不满足应用程序的要求 想一个字段包含原有数据库的多个字段 比如来自多个表 来自一个表的多个字段 全部转化为大写 总数、平均数… 为此...
  • mysql别名的使用

    2021-01-18 19:17:30
    在项目中遇到别名的问题,抽时间整理了一下在sql中,合理的使用别名可以让sql更容易写并且提高可读性。别名使用 as 来表示,可以分为表别名和列别名别名应该是先定义后使用才对,所以首先要了解sql的执行顺序sql...
  • 在项目开发中,发现在MYSQL中使用的别名没有办法被正常解析,即给字段别名无效,通过crs.getMetaData().getColumnName()取的是字段原来的字段名。如:给name字段取了个别名为name2,最终返回的结果并不是别名name2...
  • MySQL别名的使用

    2021-02-08 03:56:43
    在查询时,可以为表和字段取一个...为表取别名代码如下:mysql> SELECT * FROM department d-> WHERE d.d_id=1001;+------+-----------+--------------+-------------+| d_id | d_name | function | address...
  • where后面是不能使用查询字段别名的,而group by、having、order by后面可以使用字段别名。 为什么呢? 这与sql语句执行的顺序是有关系的,当出现select 以及 where时,表明这是查询条件语句,那么先执行where...
  • I have a Mysql Query:SELECT created_at as date FROM tableSo I created an alias for the created_at column. Now I want to use this alias in my WHERE clause:SELECT created_at as date FROM table WHERE dat...
  • mysql怎么添加别名

    2021-01-19 14:08:25
    使用 MySQL 查询时,当表名很长或者执行一些特殊查询的时候,为了方便操作或者需要多次使用相同的表时,可以为表指定别名,用这个别名代替表原来的名称。为表取别名的基本语法格式为:[AS]其中各子句的含义如下::...
  • 这个别名可以代替其指定的表和字段为表取别名mysql> SELECT * FROM department d-> WHERE d.d_id=1001;+------+-----------+--------------+-------------+| d_id | d_name | function | address |+--...
  • MySQl排序,别名

    千次阅读 2021-11-01 22:49:59
    设置别名(alias——> as) 在 MySQL 查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者 多次使用相同的表,可以给字段列或表设置别名。使用的时候直接使用别名,简洁明了,增强可读性 ①语法 ...
  • 试了一下类型一样的话,字段名不一样也是可以的 关键字as可以用来取别名 表名 [as] 表别名 mysql可以同时为多个表取别名,而且这些别名可以出现在很多不同位置 再取表别名是要注意不能与数据库中其他的表名冲突 也...
  • 好的,你需要做的是在不同的别名下加入同一个表(wp_postmeta)两次,这样你就可以使用不同的’WHERE’条件.我没有你的桌子所以我无法测试这个,但这是你想要使用的方法:SELECT wp_posts.*,(`alias_1`.meta_value) AS `...
  • MySQL中有个特殊的规定,即不允许使用列别名作为查询条件。比如有下面一个表:selectID,title,concept,conceptLength,addUserId,modifyTimefrom collections_wisdom将SQL修改如下:selectID+1 asnewID,title,...
  • substring_index(substring_index(目标字段名,"(",1),’)’,-1) AS 去除括号及括号内的内容, REPLACE(REPLACE(目标字段名,’(’,’’),’)’,’’) AS 只是去掉括号, substring_index(substring_index(目标字段名,...
  • 有时候我们对查询的结果进行了处理形成了新的列名,又想在查询条件中使用此列别名,但MySQL是不支持这样做的。为什么不支持呢?之所以MySQL中不允许使用列别名作为查询条件,据说是因为MySql中列的别名本来是返回...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 83,057
精华内容 33,222
关键字:

Mysql字段别名