2

我的 Sql Server 数据库有三个表(金额、wthdrwl、花费),每个表都有 id 和金额列。我想从这三个不同的表中检索金额列。

4

5 回答 5

5

对于 MySQL、SQL-Server,请使用UNION(implicit distinct) 或UNION ALL

SELECT Amount FROM Amount
UNION ALL
SELECT Amount FROM wthdrwl
UNION ALL
SELECT Amount FROM spent
于 2013-10-07T14:54:20.333 回答
2

我想三个表之间有一些关系

SELECT  A.Amount AS Amount ,
        W.Amount AS Withdrawal ,
        S.Amount AS Spent
FROM    Amount A
         LEFT OUTER JOIN wthdrwl W ON A.ID = W.ID
     LEFT JOIN spent S ON A.ID = S.ID

在这里检查-SqlFiddle

于 2013-10-07T15:31:51.023 回答
0

鉴于您在上面的评论,请使用固定字符串来指示值来自哪个表:

SELECT 'Amount' AS source, Amount FROM Amount
UNION ALL
SELECT 'whtdrwl' AS source, Amount FROM whtdrwl
UNION ALL
SELECT 'spent' AS source, Amount FROM spent

然后您可以轻松识别行。您可以编写一个查询,将其作为具有 3 列的单行来执行,但这样做要容易得多。

于 2013-10-07T15:01:07.143 回答
0

使用以下查询 -

select amount.amount, wthdrwl.amount, spent.amount from amount, wthdrwl, spent where amount.amount=wthdrwl.amount and wthdrwl.amount=spent.amount;

在这里,您必须使用表名和属性来清楚地识别amount3 个不同表中的属性。您需要检查所有 3 个表中的id属性是否相等,以对应结果集中一行中的特定实体。

于 2013-10-07T15:12:53.530 回答
0

如果要将它们全部放在一行上,则必须有一种方法通过第二列将列链接在一​​起,例如 txnId 列出现在 3 个表中的每一个中。然后你可以做类似的事情:

SELECT Amount.Amount Amt, whtdrwl.Amount Wdrl, spent.Amount Spd 
FROM Amount, whthdrwl, spent
WHERE Amount.txnId=wthdrwl.txnId
    Amount.txnId=spent.txnId
于 2013-10-07T15:13:46.677 回答