Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL select将两个表合并为一列_Sql Server_Tsql - Fatal编程技术网

Sql server SQL select将两个表合并为一列

Sql server SQL select将两个表合并为一列,sql-server,tsql,Sql Server,Tsql,SQL表权限为: 表格顺序如下: 我希望结果是: 从Authority.AuthorNo中进行选择,其中AuthorNo与Order.OrderNo中的AuthorNo相同,并且至少有一个AuthorNo.prepage为1 如何选择此选项?我猜您只是想在结果中看到AuthorNo?试试这个 Select distinct a.AuthorNo From Authority a join Order b on a.AuthorNo=b.AuthorNo where a.Prepay=1 如

SQL表权限为:

表格顺序如下:

我希望结果是:

从Authority.AuthorNo中进行选择,其中AuthorNo与Order.OrderNo中的AuthorNo相同,并且至少有一个AuthorNo.prepage为1


如何选择此选项?

我猜您只是想在结果中看到AuthorNo?试试这个

Select distinct a.AuthorNo
From Authority  a
join Order  b on a.AuthorNo=b.AuthorNo
where a.Prepay=1

如果您需要查找拥有订单的作者,这些订单也是由具有预付费的作者订购的

然后你可以使用一个EXISTS

SELECT auth.AuthorNo
FROM Authority auth
JOIN [Order] ord ON ord.AuthorNo = auth.AuthorNo
WHERE EXISTS
(
    SELECT 1
    FROM [Order] ord_pp 
    JOIN Authority auth_pp 
      ON auth_pp.AuthorNo = ord_pp.AuthorNo 
     AND auth_pp.Prepay = 1
    WHERE ord_pp.OrderNo = ord.OrderNo
)
GROUP BY auth.AuthorNo;
测验

结果:


你说authorNo=orderNo-怎么可能?您的订单号有两位数,而您的作者号有一位数。你能澄清一下吗?AithorNo在订单表中由OrderNo表示。AuthorNo与订单表中的OrderNo相同,也有一个是AuthorNo prepared 1。你能详细说明它的意思吗?他们都不会回答;注意:这两个表都在OrderNo列中。@MahdiYousef已更新,它适用于答案中包含的测试。已解决,非常感谢
AuthorNo
--------
   1
   2
   4
   5
Select distinct a.AuthorNo
From Authority  a
join Order  b on a.AuthorNo=b.AuthorNo
where a.Prepay=1
SELECT auth.AuthorNo
FROM Authority auth
JOIN [Order] ord ON ord.AuthorNo = auth.AuthorNo
WHERE EXISTS
(
    SELECT 1
    FROM [Order] ord_pp 
    JOIN Authority auth_pp 
      ON auth_pp.AuthorNo = ord_pp.AuthorNo 
     AND auth_pp.Prepay = 1
    WHERE ord_pp.OrderNo = ord.OrderNo
)
GROUP BY auth.AuthorNo;
AuthorNo
--------
1
2
4
5