如何从数据库中的两个表中获取数据?
问题描述:
你能解释一下,为什么这段代码不工作?如何从数据库中的两个表中获取数据?
SELECT SUM(`cash`) AS `cash`,COUNT(*) AS `rows` FROM `table_1` WHERE `login` = 'test' UNION ALL SELECT COUNT(*) AS `rows2` FROM `table_2` WHERE `login` = 'test';
在phpMyAdmin我看到这条消息:
1222 - 所使用的SELECT语句具有不同的列数
和我无法解决这个问题。
答
UNION获取多个SELECT语句的结果并将它们显示为单个结果集。但为了做到这一点,单个SELECT语句中的列数必须相同。
要理解这一点,它可以帮助格式化查询了一下:
SELECT
SUM(`cash`) AS `cash`,
COUNT(*) AS `rows`
FROM `table_1`
WHERE `login` = 'test'
UNION ALL
SELECT
COUNT(*) AS `rows2`
FROM `table_2`
WHERE `login` = 'test'
你的第一个查询选择两列,现金和行。第二个查询只选择一列,rows2。另请注意,由于UNION将结果连接起来,因此您可以通过相同的名称在每个查询中调用相应的列。
如果你真的没有,你想从第二个表中选择任何值,可以为缺少的列替换默认值:
SELECT
SUM(`cash`) AS `cash`,
COUNT(*) AS `rows`
FROM `table_1`
WHERE `login` = 'test'
UNION ALL
SELECT
NULL AS `cash`
COUNT(*) AS `rows`
FROM `table_2`
WHERE `login` = 'test'
好了,你要照顾的结果两个单个查询的集合在结构上都是相似的,因此它们可以合并为一个表。引擎还应该如何从这两套中创建一张桌子? – arkascha
嗯,好吧,但我是MySQL的初学者。 – Dawid77
你能告诉我一个示例代码吗? – Dawid77