當前位置:首頁 » 編程語言 » sql中怎麼讓兩列相等
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql中怎麼讓兩列相等

發布時間: 2022-04-26 15:00:14

Ⅰ 如何保證sql里的兩列不能同時相等

我的資料庫中,
有兩個表, 一級分類表tb1, 有如下列: id, name; 二級分類表tb2,
有如下列: id, name, tb1id. 其中tb1id引用的tb1中的id列. 我該如何確保tb2中的數據里的name和tb1id不同時相等?

use tempdb
go
create table tb2(ID int primary key,Name nvarchar(50) not null,tb1id int)
go
create function Chk_Check(@tb1id int,@Name nvarchar(50))
returns bit
as

begin
if(select count(1) from tb2 where Name=@Name and tb1id=@tb1id)=1
return 1
return 0
end
go
alter table tb2 add constraint Chk_Check_Name check(dbo.Chk_Check(tb1ID,Name)=1)

go
--測試
insert tb2 select 1,'a',1

insert tb2 select 2,'a',1--出錯

insert tb2 select 3,'a',2

insert tb2 select 4,'a',2--出錯

select * from tb2

Ⅱ sql怎麼查詢出兩列欄位相同的數據(在忽略英文大小寫和空格的情況下)

欄位值去掉空格和轉換成大寫或小寫之後,再做比較就可以了。

不知道你是什麼資料庫,以ORACLE資料庫舉例:

SELECTDISTINCTIN1.*
FROMINVENTORYIN1
WHEREEXISTS(
SELECTIN2.*
FROMINVENTORYIN2

WHEREIN1.ID!=IN2.ID
ANDLOWER(REPLACE(IN1.NAME,''))=LOWER(REPLACE(IN2.NAME,''))
ANDLOWER(REPLACE(IN1.STD,''))=LOWER(REPLACE(IN2.STD,''))
)

Ⅲ SQL資料庫不能插入相同數據怎麼才能使能插入相同的兩列數據了如圖

1、先確認一下你表裡唯一約束的欄位。
2、如果只是主鍵,並且是自增列,不用去掉主鍵,只要在insert 時,不寫ID這個列就可以了。
3、例子,假設表的主鍵是ID,有倆欄位,NAME,AGE,且沒有其他唯一約束的列:
insert into tab1(name,age) values('raofeng4666275','21');

Ⅳ SQL中限定兩列必須相等

使用觸發器。

或者使用表級 check, 限定 第二列的值必須等於第一列。

Ⅳ sql怎麼查詢出兩列欄位相同的數據(同時忽略英文大小寫和空格的情況下)

SQL 關鍵字 UPPer(),lower() 函數,
UPPer 統一轉換成大寫,
lower 統一轉換成小寫
假如表 T 中存在t 欄位,數據為:』abCD『
select * from T where UPPER(t)=UPPER(abCD)
上面是轉換成大寫再比較,轉換小寫用法類似。

Ⅵ SQL SERVER怎麼同一個表的兩個列參照另一個表的同一列 這兩個列的數據可以相同

建2個外鍵:注意約束名不能一樣,
員工表 中的 工作人員編號 要是主鍵。

alter table 表名 add constraint 約束名1 foreign key (推薦人編號) references 員工表(工作人員編號)

alter table 表名 add constraint 約束名2 foreign key (組長編號) references 員工表(工作人員編號)

Ⅶ SQL語句,實現A、B兩表中的兩列比較,輸出數據相同行。

1.
select A.單位, A.所在地區, B.時間 from A inner join B on A.單位=B.單位

2.
select A.單位, B.單位, A.所在地區, B.時間 from A inner join B on B.單位 like '%'+A.單位+'%'

Ⅷ sql server 2005查詢一個表中兩列值相等的sql語句怎麼寫

select * from 表 where 列1=列2

或者select * from A A1 INNER JOIN A A2 ON A1.列1=A2.列2

Ⅸ SQL創建CHECK約束時怎麼讓讓兩列數據比較

現在要說的是在列這一層次過濾的基於表定義之前就規范好的 CHECK 約束。(MySQL 版本 >= 8.0.16)

  • mysql> create table f1 (r1 int constraint tb_f1_r1_chk1 check (mod(r1,3)=0));

  • Query OK, 0 rows affected (0.03 sec)

  • mysql> create table f2 (r1 int constraint tb_f2_r1_chk1 check (mod(r1,3)=0) not enforced);

  • Query OK, 0 rows affected (0.02 sec)

  • 這里 CHECK 約束的相關限制如下:

    1. constraint 名字在每個資料庫中唯一。

    也就是說單個資料庫里不存在相同的兩個 constraint,如果不定義,系統自動生成一個唯一的約束名字。

    2. check 約束針對語句 insert/update/replace/load data/load xml 生效;針對對應的 ignore 語句失效。

    3. 並非每個函數都可以使用,比如函數結果不確定的:NOW(),CONNECTION_ID(),CURRENT_USER()。

    4. 不適用於存儲過程和存儲函數。

    5. 系統變數不適用。

    6. 子查詢不適用。

    7. 外鍵動作(比如 ON UPDATE, ON DELETE) 不適用。

    8. enforced 默認啟用,如果單獨加上 not enforced ,check 約束失效。

Ⅹ sql2005 兩個表中不同列名的兩列數據是否相同

可以這樣
select * from A where not exists(select * from B where A.a = B.b) order by c;