Mysql 将一个查询的结果传递给另一个查询,然后合并这两个查询的结果

Mysql 将一个查询的结果传递给另一个查询,然后合并这两个查询的结果,mysql,sql,Mysql,Sql,我有以下疑问: SELECT name as String , COUNT(*) Total , SUM(product = 1) Product FROM String WHERE language = 1 GROUP BY name ORDER BY total desc LIMIT 10

我有以下疑问:

SELECT name as String
     , COUNT(*) Total
     , SUM(product = 1) Product
           FROM String
                WHERE language = 1
           GROUP 
                BY name
           ORDER
                BY total desc
           LIMIT 10
此查询的目的是根据字符串在
String
表中的出现情况报告前10名字符串,并报告它们在特定产品中的出现情况(id=1)

我想在结果中添加另一个列,它将计算每个字符串在另一个字符串的中间出现多少次。为此,我有一个表
Copy
,它由全文索引索引

我的问题是如何将
String
列的值从结果传递到此查询:

SELECT COUNT(name) as inAll
    FROM Copy c
        WHERE MATCH(c.name) AGAINST (/*String*/)
仅仅通过一个SQL查询就可以实现这个结果吗

Before:                   After:

String Total Product      String Total Product inAll
+-----+-----+------+      +-----+-----+-------+-----+
|blah | 52  |  12  |      |blah | 52  |  12   | 96  |
|bleh | 23  |  14  |      |bleh | 23  |  14   | 56  |
|bloh | 14  |  11  |      |bloh | 14  |  11   | 34  |
+-----+-----+------+      +-----+-----+-------+-----+
谢谢

编辑

我的模式:

CREATE TABLE Language (
    `id` INT NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(30) NOT NULL,
    `code` VARCHAR(10) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB CHARSET=utf8 COLLATE utf8_unicode_ci; 

CREATE TABLE Product (
    `id` INT NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(100) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB CHARSET=utf8 COLLATE utf8_unicode_ci;

CREATE TABLE String (
    `id` INT NOT NULL AUTO_INCREMENT,
    `label` VARCHAR(200),
    `name` TEXT(500) NOT NULL,
    `language` INT NOT NULL,
    `product` INT NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci;

CREATE TABLE Copy (
    `id` INT NOT NULL,
    `name` TEXT(500) NOT NULL,
    PRIMARY KEY (`id`),
    FULLTEXT(name)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci;

加上
插入
删除
更新
触发器。

您可以尝试加入
字符串
复制
表:

SELECT COUNT(*) AS inAll, t.String AS String, t.Total AS Total, t.Product AS Product
FROM Copy c
INNER JOIN
(
    SELECT name AS String, COUNT(*) Total, SUM(product = 1) Product
    FROM String
    WHERE language = 1
    GROUP BY name
    ORDER BY COUNT(*) desc
    LIMIT 10
) t
ON c.name = t.name

MySQL不允许在
内部对
使用子查询,因此您当前的方法肯定需要重新修改。
字符串
复制
表之间的关系是什么?由于旧的MySQL版本,我无法在InnoDB表上使用全文索引,所以复制表只是字符串表的副本(id列和名称列)。我对所有不需要在全文索引中搜索的查询使用字符串表。我遇到错误“操作数应包含1列”@我更新了我的查询,它应该运行无误。是的,它正在工作。我可以在使用此查询时以某种方式取回我的附加列吗?或者我应该按照您在评论中所写的方式更改我的方法吗?在这种情况下,您最好的选择是加入。请发布您的架构。将架构添加到我的帖子中