问题陈述是:
设W(A,B)为关系模式。 A的域名为INTEGER
,B的域名为VARCHAR(5)
。
编写一个SQL查询,如果A是a,则返回W中元组的A值 W的主键,否则,即如果A不是主键,那么 查询应该返回W中元组的A值,其中主要是 关键属性被违反。
如何检查SQL查询中的主键条件?
答案 0 :(得分:0)
在 SQL-SERVER :
中如果您想要查询表格的约束(尤其是主键),您可以使用INFORMATION_SCHEMA.TABLE_CONSTRAINTS
作为这样的表:
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME='YourTable'
--If you only want the column that has the CONSTRAINT_TYPE = 'PRIMARY KEY'
--AND CONSTRAINT_TYPE = 'PRIMARY KEY'
如果能回答您的问题,请告诉我。
答案 1 :(得分:0)
我找到了这个问题的答案,如下:
SELECT W."A" FROM "W" W WHERE NOT EXISTS
(SELECT W1."A" FROM "W" W1,"W" W2 WHERE
W1."A" = W2."A" AND W1."B" <> W2."B")
UNION
SELECT DISTINCT W."A" FROM "W" W WHERE EXISTS
(SELECT * FROM "W" W1,"W" W2 WHERE W."A" = W1."A" AND
W1."A" = W2."A" AND W1."B" <> W2."B")