【问题标题】:select distinct u.id, u.first_name + ' ' + u.last_name , u.company_name from user_master u gives wrong resultselect distinct u.id, u.first_name + ' ' + u.last_name , u.company_name from user_master u 给出错误结果
【发布时间】:2015-02-09 21:57:56
【问题描述】:

我的应用程序正在使用 java + MSSQL 和 MySQL。下面的查询适用于 MSSQL,但不适用于 MySql。 在mysql中,当我编写如下查询时,它给了我错误的结果

查询

select distinct u.id, u.first_name + ' ' + u.last_name as 'FullName', u.company_name  from user_master u 

它给了我下面的结果

结果

id  FullName company_name
1   0        abc
2   0        comp2

预期结果

id  FullName      company_name
1   shah priya    abc
2   xyz test      comp2

任何机构都可以帮我做这件事

如果我在下面写查询,那么它工作正常

select distinct u.id, concat(u.first_name,' ',u.last_name) as 'FullName', u.company_name 

请帮我解决这个问题。

【问题讨论】:

标签: java mysql sql-server


【解决方案1】:

您不应使用+ 运算符进行连接。相反,您应该使用 concat 函数。
+ 在这里表示添加。
this

【讨论】:

    【解决方案2】:

    由于您已为 SQL Server 添加标签,以下内容将对您有所帮助

    你的桌子

    SELECT 'PRIYA' FNAME, 'RAMAN' LNAME
    INTO #TEMP
    

    你的结果

    SELECT *,FNAME + ' ' + LNAME AS FULLNAME 
    FROM #TEMP
    

    这是小提琴http://sqlfiddle.com/#!3/85020/1(如果加载时出现任何错误,请按RUNSQL)

    【讨论】:

    • 我只需要三个字段。不想要整个记录
    • SELECT distinct u.id, u.first_name + ' ' + u.last_name as AS FullName, u.company_name from user_master u @Sejal Rudani
    【解决方案3】:

    我建议保留 concat() 表示法,恕我直言,如果您只是希望它在 MySQL 中工作,它会更清晰。

    如果需要查询之间的兼容性,也许你应该使用像 HQL 这样的高级查询语言,然后让 MSSQL 和 MYSQL 驱动程序将其转换为特定的 sql 惯用语。请参阅documentation of Hibernate

    【讨论】:

      【解决方案4】:

      select distinct u.id, CONCAT_WS(' ',u.first_name,u.last_name) as FullName, u.company_name from user_master u

      CONCAT & CONCAT_WS 是mysql内置的字符串函数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-23
        • 1970-01-01
        • 1970-01-01
        • 2020-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多