我需要从3个不同的表中检索单个列

时间:2013-10-07 14:53:27

标签: mysql sql-server

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

5 个答案:

答案 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