mysql从两个表中获取信息

mysql从两个表中获取信息,mysql,mysqli,Mysql,Mysqli,我想从一个数据库中的两个不同表中提取一些信息, [(第一张表):id为-…] [(第二个表):id-…] 我想从第一个表中提取id,从第二个表中提取id: 所以在我的例子中,我写了这个,但我不知道如何把这两行合并成一行: SELECT sum(nbrNight) as night FROM firsttab SELECT count(`id`) as id FROM secondtab 我用这句话来概括这两行: SELECT sum(nbrNight) as night,count(`id`)

我想从一个数据库中的两个不同表中提取一些信息, [(第一张表):id为-…] [(第二个表):id-…]

我想从第一个表中提取id,从第二个表中提取id: 所以在我的例子中,我写了这个,但我不知道如何把这两行合并成一行:

SELECT sum(nbrNight) as night FROM firsttab
SELECT count(`id`) as id FROM secondtab
我用这句话来概括这两行:

SELECT sum(nbrNight) as night,count(`id`) FROM firsttab,secondtab
但是他不工作!!
我需要帮助

您可以使用
UNION
组合来自两个查询的结果,如

SELECT sum(nbrNight) as night FROM firsttab
UNION
SELECT count(`id`) as id FROM secondtab
(或)使用两个表之间的公共列(如有)对这两个表进行
连接,如下所示(假设
id
是它们之间的公共列)


一种选择是将查询用作内联视图;在另一个查询中将这些查询引用为行源(如表)

由于每个查询返回一行,因此您可以安全地执行
连接
操作,而不需要任何连接谓词(也称为
交叉连接

例如:

SELECT f.night
     , s.id 
  FROM ( SELECT SUM(nbrNight) AS night FROM firsttab ) f
 CROSS
  JOIN ( SELECT COUNT(id) AS id FROM secondtab ) s
SELECT ( SELECT SUM(nbrNight) FROM firsttab ) AS night
     , ( SELECT COUNT(id) FROM secondtab ) AS id

另一个选项(因为两个查询都保证只返回一行,如果它们不返回错误的话)是将查询包含在另一个查询的选择列表中。子查询中不必包含列别名,但我们可以指定别名

例如:

SELECT f.night
     , s.id 
  FROM ( SELECT SUM(nbrNight) AS night FROM firsttab ) f
 CROSS
  JOIN ( SELECT COUNT(id) AS id FROM secondtab ) s
SELECT ( SELECT SUM(nbrNight) FROM firsttab ) AS night
     , ( SELECT COUNT(id) FROM secondtab ) AS id

如果其中一个查询返回了多个列,那么第一个示例中的方法仍然有效。内联视图查询可以返回多个表达式,我们可以在外部查询中引用这些表达式。对于第二个示例中的模式,它施加了子查询只能返回一个表达式(一列)的限制

作为演示返回多个列的内联视图的示例,内联视图
f
返回三个表达式:

SELECT f.night
     , f.cnt
     , f.min_nbr
     , s.id 
  FROM ( SELECT SUM(nbrNight)   AS night
              , COUNT(nbrNight) AS cnt
              , MIN(nbrNight)   AS min_nbr
          FROM firsttab 
       ) f
 CROSS
  JOIN ( SELECT COUNT(id) AS id FROM secondtab ) s

@请帮我问一下rassemble,它们有什么关系?什么字段将它们联系在一起。您是否只需要在一行上显示这两个结果?我还不知道这两个表中的行是否有关系,是否需要连接这两个表。第一个查询返回两行。OP在单行上指定返回结果。第二个查询可能返回一行,但结果不太可能与OP规范匹配。