zoukankan      html  css  js  c++  java
  • 随机记录工作中常见的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

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

  • 相关阅读:
    异常处理
    面向对象 -- 内置方法
    面向对象 -- 反射(详细)
    面向对象 -- 反射
    面向对象 -- 三大特性之封装
    pickle模块 collections模块在面向对象中的应用
    面向对象 -- 三大特性之多态
    Third Week(补充完整)
    Second Week(补充完整)
    First Week (补充完整)
  • 原文地址:https://www.cnblogs.com/lovehersister/p/5500632.html
Copyright © 2011-2022 走看看