例如,我有两个表: -
CREATE TABLE `augus1dl_ecom`.`test`
(
`id` INT NOT NULL AUTO_INCREMENT,
`cn_no` VARCHAR(10) NOT NULL,
`amt` DECIMAL(8,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = MyISAM;
CREATE TABLE `augus1dl_ecom`.`test2`
(
`id` INT NOT NULL AUTO_INCREMENT,
`docket_id` VARCHAR(25) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`cn_id` INT NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = MyISAM;
INSERT INTO `augus1dl_ecom`.`test` (`id`, `cn_no`, `amt`)
VALUES (NULL, 'A', '100'), (NULL, 'B', '200');
INSERT INTO `augus1dl_ecom`.`test2` (`id`, `docket_id`, `cn_id`)
VALUES (NULL, 'DK1', '1'), (NULL, 'DK2', '2'), (NULL, 'DK3', '1') ;
在test
表中,cn_no
是唯一的。但是在test2
表中,可以多次插入一个cn_no
(指cn_id
)。
我的意思是test.id = test2.cn_id
。
现在我运行以下查询:
SELECT a.*
FROM test2 a, test b
WHERE b.id = a.cn_id AND b.cn_no = 'A'
它成功运行。但我不需要数据,我需要行数/条目数。所以我运行以下查询以从test
检索行数(计数),具体取决于test2
中的条件:
SELECT count(a.*)
FROM test2 a, test b
WHERE b.id = a.cn_id AND b.cn_no = 'A';
但查询失败并出现错误。所以在这种情况下我需要帮助。提前致谢。我的英语还不好,我不是mysql的专业人士。 Stackoverflow将问题视为SQL: Combine Select count(*) from multiple tables的副本,但事实并非如此。这里我想要count(*)取决于另一个表中可用的数据。
答案 0 :(得分:0)
尝试以下查询
SELECT COUNT(a.*) FROM test2 a INNER JOIN test b ON b.id=a.cn_id WHERE b.cn_no='A' GROUP BY(b.id);
新查询
SELECT COUNT(*)
FROM
(
SELECT a.* FROM test2 a INNER JOIN test b ON b.id=a.cn_id WHERE WHERE b.cn_no='A'
) AS final
我建议你使用inner join
它们很容易且效率很高。希望能帮助到你。如果它没有让我知道我还没有测试过它。