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

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

  • 相关阅读:
    十一招解决:系统IE部分网页打不开怎么办(转载)
    基于阿里云server搭建SVNserver
    hdu 2825 Wireless Password(ac自己主动机&dp)
    压力单位MPa、Psi和bar之间换算公式
    hdu4506小明系列故事——师兄帮帮忙 (用二进制,大数高速取余)
    图像处理之霍夫变换(直线检測算法)
    hdu1171 Big Event in HDU 01-背包
    [视频] x264 压缩笔记
    UVALive 4043 Ants
    关于游戏手柄按键的设计
  • 原文地址:https://www.cnblogs.com/lovehersister/p/5500632.html
Copyright © 2011-2022 走看看