我的 Sql Server 数据库有三个表(金额、wthdrwl、花费),每个表都有 id 和金额列。我想从这三个不同的表中检索金额列。
问问题
78 次
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;
在这里,您必须使用表名和属性来清楚地识别amount
3 个不同表中的属性。您需要检查所有 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 回答