我的Sql Server数据库有三个表(Amount,wthdrwl,花费),每个表都有id和amount列。 我想从这三个不同的表中检索金额列。
答案 0 :(得分:5)
对于MySQL,SQL-Server,使用UNION
(隐式不同)或UNION ALL
:
SELECT Amount FROM Amount
UNION ALL
SELECT Amount FROM wthdrwl
UNION ALL
SELECT Amount FROM spent
答案 1 :(得分: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
答案 2 :(得分: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列的单行执行,但以这种方式执行操作要容易得多。
答案 3 :(得分:0)
使用以下查询 -
select amount.amount, wthdrwl.amount, spent.amount from amount, wthdrwl, spent where amount.amount=wthdrwl.amount and wthdrwl.amount=spent.amount;
您必须使用表名和属性来清楚地标识3个不同表中的amount
属性。您需要检查所有3个表中id
属性的相等性,以对应结果集行中的特定实体。
答案 4 :(得分:0)
如果要将它们全部放在一行上,则必须有一种方法可以通过第二列将列链接在一起,例如在3个表中的每个列中出现的txnId列。然后你可以做类似的事情:
SELECT Amount.Amount Amt, whtdrwl.Amount Wdrl, spent.Amount Spd
FROM Amount, whthdrwl, spent
WHERE Amount.txnId=wthdrwl.txnId
Amount.txnId=spent.txnId