Sql server 如何连接两个T-SQL语句

Sql server 如何连接两个T-SQL语句,sql-server,Sql Server,我在sql方面有问题,我想连接两个sql语句 第一个 "Select * from [PhotoStatusProfile] WHERE Email IN (Select Friend1 from [Friendship] WHERE Friend2 = '" + Session["Email"].ToString() + "' AND Friend_Status =1 UNION Select Friend2 from [Friendship] WHERE Friend1 = '" + Ses

我在sql方面有问题,我想连接两个sql语句

第一个

"Select * from [PhotoStatusProfile] WHERE Email IN (Select Friend1 from [Friendship] WHERE Friend2 = '" + Session["Email"].ToString() + "' AND Friend_Status =1 UNION Select Friend2 from [Friendship] WHERE Friend1 = '" + Session["Email"].ToString() + "' AND Friend_Status =1 ) UNION Select * From PhotoStatusProfile WHERE Email='" + Session["Email"] + "' order by Date desc", con);
第二个

Select * from UserData WHERE Email='"+Session["Email"]+"'
这是我尝试过的代码,但它给了我错误

"Select * from [PhotoStatusProfile] WHERE Email IN (Select Friend1 from [Friendship] WHERE Friend2 = '" + Session["Email"].ToString() + "' AND Friend_Status =1 UNION Select Friend2 from [Friendship] WHERE Friend1 = '" + Session["Email"].ToString() + "' AND Friend_Status =1 ) UNION Select * From PhotoStatusProfile WHERE Email='" + Session["Email"] + "' order by Date desc UNION Select * from UserData WHERE Email='"+Session["Email"]+"'
用户数据表

PhotoStatusProfile表


始终检查状态变量是否为空,如会话、视图状态

那就试试这个

"Select * from [PhotoStatusProfile] WHERE Email 
IN (Select Friend1 from [Friendship] 
WHERE Friend2 = @Email
AND Friend_Status =1 UNION Select Friend2 from 
[Friendship] WHERE Friend1 = @Email
AND Friend_Status =1 ) UNION Select ColumnName From PhotoStatusProfile
WHERE Email=@Email order by Date desc", con);
在上一个联合中使用*的联合时,列名应相等


始终使用SqlParameters以防SQL注入

联合操作有一些限制。从以下方面查看以下约束:

请注意,UNION中的每个SELECT语句必须具有相同的列数。列还必须具有类似的数据类型。此外,每个SELECT语句中的列的顺序必须相同


在我看来,您希望基于电子邮件加入并在.NET程序中创建sql字符串。如果我的假设是正确的,那么应该是这样的:

"Select * from 
(Select * from [PhotoStatusProfile] WHERE Email 
IN 
(Select Friend1 from [Friendship] WHERE Friend2 = '" + Session["Email"].ToString() + "' AND Friend_Status =1 
UNION 
Select Friend2 from [Friendship] WHERE Friend1 = '" + Session["Email"].ToString() + "' AND Friend_Status =1 ) 
UNION Select * From PhotoStatusProfile WHERE Email='" + Session["Email"] + "' ) a 
JOIN UserData b on a.Email=b.Email order by Date desc", con) 

这些表的列是相同的吗?我认为Jayvee有一个观点,这让我问:您是否将ASP.NET页面中的代码复制/粘贴到SQL server?如果是这种情况,您需要更改一些值以使SQL工作。如何将Select*from UserData WHERE='+Session[Email]+'代码连接到您的SQL代码?啊,好的,那么告诉我如何连接两个表查询?什么是正确的查询?@Prabath:使用W3schools来了解它。在您的例子中,按照我所说的顺序选择具有相同类型的列。我不知道你们桌子上的列。@Prabath:你们想做什么?你想吃什么?
SqlParameter para=new SqlParameter("@Email",SQLDb.Varchar,50);
if(Session["Email"]!=null)
{
para.Value=Session["Email"].ToString();
}
else
{
para.Value="";
}
"Select * from [PhotoStatusProfile] WHERE Email 
IN (Select Friend1 from [Friendship] 
WHERE Friend2 = @Email
AND Friend_Status =1 UNION Select Friend2 from 
[Friendship] WHERE Friend1 = @Email
AND Friend_Status =1 ) UNION Select ColumnName From PhotoStatusProfile
WHERE Email=@Email order by Date desc", con);
"Select * from 
(Select * from [PhotoStatusProfile] WHERE Email 
IN 
(Select Friend1 from [Friendship] WHERE Friend2 = '" + Session["Email"].ToString() + "' AND Friend_Status =1 
UNION 
Select Friend2 from [Friendship] WHERE Friend1 = '" + Session["Email"].ToString() + "' AND Friend_Status =1 ) 
UNION Select * From PhotoStatusProfile WHERE Email='" + Session["Email"] + "' ) a 
JOIN UserData b on a.Email=b.Email order by Date desc", con)