使用单个查询从多个表中获取数据

时间:2017-07-18 10:45:17

标签: mysql

我有3张桌子

  1. 定价(身份,状态)
  2. 结算(身份,身份)
  3. 合规性(身份,身份)
  4. id& status是表的列。这些表之间没有任何连接(没有主键 - 外键关系),我的意思是它们都是独立的表。

    我每张桌子只有1条记录,所以只有1个id&表中只有1个状态。所以我想从每个表中获取状态以及仅单个查询中的表名

    我的预期输出:

    table Name        status
    
    Pricing            1
    Billing            2
    Compliance         3
    

    注意:我正在寻找单一查询解决方案。

    提前致谢。

3 个答案:

答案 0 :(得分:0)

我认为你正在寻找这样的东西......

    SELECT
        STATUS,
        'Pricing' as TableName
    FROM
        Pricing

    UNION

    SELECT
        STATUS,
        'Billing' as TableName
    FROM
        Billing

    UNION

    SELECT
        STATUS,
        'Compliance' as TableName
    FROM
        Compliance

或您可以使用子查询。

答案 1 :(得分:0)

您可以使用此查询。您只需创建一个包含“n”列的表编号,并在其中插入1到10个值。然后,下面的查询将按照您的期望工作。

 select
 SUBSTRING_INDEX(SUBSTRING_INDEX(tablename, ',', numbers.n), ',', -1)  tablename,
 SUBSTRING_INDEX(SUBSTRING_INDEX(statuss, ',', numbers.n), ',', -1) status
 from
 numbers inner join (select 'Pricing,Billing,Compliance'  as 'tablename',concat(Pricing.status,',',Billing.status,',',Compliance.status )as 'statuss'
from Pricing,Billing,Compliance) as s on CHAR_LENGTH(s.tablename)
-CHAR_LENGTH(REPLACE(s.tablename, ',', ''))>=numbers.n-1

答案 2 :(得分:0)

通过连接这些表来创建VIEW。并随时调用视图(单个查询结果)。你必须创建一次VIEW并随时在VIEW上激活查询。