有一个问题啊,如果存在两个都是入,那么算不算唯一,比如E0122,如果还有一个时间是20190102 入,那么E0122还算不算唯一。这样满足号码唯一,不太满足入唯一,不过要看你的具体需求,所以我不写这种情况了,只写号码和入只出现过一次的。
这个个人觉得写法有好多种
(1)利用你的写法
select from BK_SQLE where 号码||'(1' in (SELECT 号码 ||'('||COUNT(1) FROM BK_SQLE GROUP BY 号码 ) and 出入='入'
其实何以嵌套三层,不过两层就可以,所以我就没写三层。另外||是oracle的连接符号,作用是a||b显示出来是ab,所以如果是其他数据库应该也有类似的函数,你看着用。‘(’是为了区分后面的1和前面号码的,只要用一个符号或字母区分就可以,不一定非要(符号。
(2)如果一个号码可能有两个入,那么下面这种方式要改动一下才能用
select from BK_SQLE where 号码 not in (select 号码 from BK_SQLE where 出入='出')
其他方法还有,比如开窗函数也可以做(这种写起来可能比较麻烦,而且还需要试验),还有一种方式始终没怎么想明白,似乎可以又似乎不可以,自己都有点混酱酱的,这种就不写了。
以serversql为例:
if exists(select from sysobjects where name='DepartmentTab')
drop table DepartmentTab
create table DepartmentTab--创建一个表
(
DepartID int primary key identity(1,1),--identity自增 ,primary key主键
DepartName nvarchar(50) unique,--unique唯一的,并且不能为空
condition int default('0') --default 默认为0
)
那就用guid吧。全球唯一id。许多的程序等都有类似的类库方法。比如c#等都会内置的。
还有办法就是自己设计字段吧,什么字段什么意思自己可以设计的不重复。而且各个字段什么意思都可以看明白。
希望我的回答可以帮到你。
select from customer a INNER JOIN
(
select customernum,max(customerid) customerid from customer group by customernum
) b ON Acustomerid = bcustomerid
这种表连接查询,如果没有错的话,效率应该是最好的了。
以上就是关于sql语法如何查两列中都是唯一的语句全部的内容,包括:sql语法如何查两列中都是唯一的语句、mysql 如何查询每一行数据的唯一标识符、MS SQL SERVER数据库中每次获取唯一值问题。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)