我正在使用asp.net sql构建社交网络,但我在使用SQL上的MINUS Operator时遇到问题。我使用以下关键字
选择所有朋友的用户数据Select * from [UserData]
我想减少来自该查询的以下查询
SELECT *
FROM [Friendship]
WHERE Friend2 = '" + Session["Email"].ToString() + "'
AND Friend_Status = 1
UNION
SELECT *
FROM [Friendship]
WHERE Friend1 = '" + Session["Email"].ToString() + "'
AND Friend_Status = 1
我尝试过,但是当我运行它时,它会为我提供有关此查询的详细信息
Select * from [UserData]
这是我试过的代码
SELECT *
FROM [UserData]
MINUS
SELECT *
FROM [Friendship]
WHERE Friend2 = '" + Session["Email"].ToString() + "'
AND Friend_Status = 1
UNION
SELECT *
FROM [Friendship]
WHERE Friend1 = '" + Session["Email"].ToString() + "'
AND Friend_Status = 1
你能告诉我们如何使用这个MINUS OPERATOR吗?
答案 0 :(得分:1)
减号是Oracle语法。 相当于MINUS的SQL服务器是EXCEPT
http://www.sqlservercentral.com/Forums/Topic289916-23-1.aspx
答案 1 :(得分:1)
在Sql Server
中,您可以使用Except
运算符,该运算符相当于Minus
EXCEPT返回左输入查询中不是的不同行 通过正确的输入查询输出。
查询应该像
SELECT *
FROM [UserData]
EXCEPT
SELECT *
FROM (SELECT *
FROM [Friendship]
WHERE Friend2 = '" + Session["Email"].ToString() + "'
AND Friend_Status = 1
UNION
SELECT *
FROM [Friendship]
WHERE Friend1 = '" + Session["Email"].ToString() + "'
AND Friend_Status = 1) a
注意:确保您有相同的号码。 Freindship
和UserData
表格中的列
答案 2 :(得分:0)
还要提到你的第三个代码示例运行没有错误,因为MINUS
只是一个表别名。事实上它说:
SELECT *
FROM [UserData] AS MINUS;
SELECT *
FROM [Friendship]
...
MINUS
不是语言关键字,因此对于查询编译器而言,它只是一个符合别名的随机字符串。
如果您没有意识到这一点,那么看到两个查询" connected"会很困惑。通过MINUS
只输出两个结果集。