在mysql

时间:2017-04-15 21:58:19

标签: php mysql

例如,我有两个表: -

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(*)取决于另一个表中可用的数据。

1 个答案:

答案 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它们很容易且效率很高。希望能帮助到你。如果它没有让我知道我还没有测试过它。