• 随机记录工作中常见的sql用法错误(一)


      没事开始写博客,留下以前工作中常用的笔记,内容不全或者需要补充的可以留言,我只写我常用的。

      

      网上很多类似动软生成器的小工具,这类工具虽然在表关系复杂的时候没什么软用,但是在一些简单的表结构关系还是很方便的。想起以前开始工作的时候经常犯的错误。

      现在就写个简单的错误,大神可能一眼就看出来了,不过新手需要了解一下的。

      Create table UC_counter

      {

        id INT IDENTITY(1, 1) PRIMARY KEY,

        memberid int 

      }

      

      Create table UC_member

      {

        id int ,

        name nvarchar(50) ,

        

      }

      不讨论这个表设计的合不合理,UC_counter的memberid 关联的是UC_member的id 

      select (select top 1 name  from UC_member a where a.memberid = id ) from UC_counter

      很多代码生成器查出数据时类似 select * from UC_counter的语句,自己只需输入查出条件 ,查出内容(用过的应该知道,就不仔细说了),

      上面那段代码时想查出对应UC_member的那么字段, 不过会失望的。

      上面那段代码的可以翻译成

        select (select top 1 name  from UC_member a where a.memberid = a.id ) from UC_counter

      所以我会加个top 1,因为这样子查询可能会多条数据报错,多个字段相同服务器辨别不出来,找寻的是最近一个表字段,

      正确的写法:select (select top 1 name  from UC_member a where a.memberid = b.id ) from UC_counter b

      但是代码生成器怎么可能给你在表后面加别名,所以推荐那些想用代码生成工具的人,建表的时候,表关系相连的表对应字段名称最好不同

      

      

      Create table UC_counter

      {

        id INT IDENTITY(1, 1) PRIMARY KEY,

        memberid int 

      }

      

      Create table UC_member

      {

        Mid int ,

        name nvarchar(50) ,

        

      }

      select (select top 1 name  from UC_member a where a.memberid = Mid  ) from UC_counter

      这么用的话就没问题,这是突然想起来的问题,希望对不熟悉的人有帮助,以前纯属手打,写的不够详细,可以留言。

  • 相关阅读:
    Jqgrid学习
    【转】SpringMVC 流程图
    【转】spring学习之@SessionAttributes
    【转】HttpSessionListener, HttpSessionAttributeListener的用法
    Java会话(session)管理
    hibernate--一对多xxx.hbm.xm配置
    使用Spring容器
    最简单的hibernate入门、配置
    搭建Struts 2的工作环境
    Struts2的常用标签
  • 原文地址:https://www.cnblogs.com/lovehersister/p/5500632.html
Copyright © 2020-2023  润新知