MySQL SQL 子查询?
Posted
技术标签:
【中文标题】MySQL SQL 子查询?【英文标题】:MySQL SQL Subquery? 【发布时间】:2010-11-27 05:29:02 【问题描述】:鉴于以下架构/数据/输出,我将如何格式化 SQL 查询以提供结果输出?
创建表报告( id BIGINT AUTO_INCREMENT, 名称 VARCHAR(255) 非空唯一, 源 VARCHAR(255) NOT NULL UNIQUE, 主键(id) ) 引擎 = 创新;
创建表字段( id BIGINT AUTO
_
INCREMENT, 名称 VARCHAR(255) 非空唯一, report_id BIGINT, 主键(id) ) 引擎 = 创新;ALTER TABLE 归档添加外键 (report_id) REFERENCES report(id) ON DELETE CASCADE;
报告: ID、名称、来源 1 报告1 来源1 2 报告2 来源2 3 报告3 来源3 4 报告4 来源4
字段: id、名称、report_id 1 名 3 2 姓 3 3 岁 3 4 状态 4 5 岁 4 6级4
搜索词“年龄等级”的预期输出 report_id、report_name、num_fields_matched 3 报告3 1 4 报告4 2
提前致谢!
【问题讨论】:
顺便说一句,当“name”列是 UNIQUE 时,如何在表“Field”中放置两个“Age”值? 那是我的错误。我领先了自己。在测试您的代码后,我必须编辑架构以删除几个独特的语句。再次感谢。 【参考方案1】:此查询将返回包含您需要的单词的所有报告。
SELECT *
FROM report r
INNER JOIN field f ON r.id = f.report_id
WHERE name IN ('age','rank')
你必须嵌套它。所以最终的查询是:
SELECT a.id, a.name, COUNT(*)
FROM
(
SELECT r.id, r.name
FROM report r
INNER JOIN field f ON r.id = f.report_id
WHERE f.name
IN ('age', 'rank')
)a
GROUP BY a.id, a.name
【讨论】:
以上是关于MySQL SQL 子查询?的主要内容,如果未能解决你的问题,请参考以下文章