如何检查SQL查询中的主键条件?

时间:2016-09-15 13:20:21

标签: sql database postgresql

问题陈述是:

设W(A,B)为关系模式。 A的域名为INTEGER,B的域名为VARCHAR(5)

编写一个SQL查询,如果A是a,则返回W中元组的A值 W的主键,否则,即如果A不是主键,那么 查询应该返回W中元组的A值,其中主要是 关键属性被违反。

如何检查SQL查询中的主键条件?

2 个答案:

答案 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")