我需要计算Field_ID为“ 134”但没有其他Field_ID的公司;在我的示例中,ID为2的公司只有1个字段“ 134”,因此我需要对此进行计数,但是ID 3的公司却具有“ 134”字段,但是还有其他字段,因此我想从计数中排除该字段。

Table ID        Company_ID  Field_ID
1               1              130
2               1              131
3               2              134
4               3              134
5               3              137
6               3              140


MySQL工作台

SELECT count(distinct id) FROM company
where field_id = 1


我需要计算Field_ID为“ 134”但没有其他Field_ID的公司;在我的示例中,ID为2的公司只有1个字段“ 134”,因此我需要对此进行计数,但是ID 3的公司却具有“ 134”字段,但是还有其他字段,因此我想从计数中排除该字段。

预期结果应为“ 1”

Table ID        Company_ID  Field_ID
1               1              130
2               1              131
3               2              134
4               3              134
5               3              137
6               3              140

最佳答案

您可以按Company_ID分组并计算Field_ID的数量,然后仅选择计数= 1的那些:

模式(MySQL v5.7)

CREATE TABLE test (
  `Table ID` INTEGER,
  `Company_ID` INTEGER,
  `Field_ID` INTEGER
);

INSERT INTO test
  (`Table ID`, `Company_ID`, `Field_ID`)
VALUES
  (1, 1, 130),
  (2, 1, 131),
  (3, 2, 134),
  (4, 3, 134),
  (5, 3, 137),
  (6, 3, 140);




查询#1

SELECT t.Company_ID
FROM test t
GROUP BY t.Company_ID
HAVING COUNT(t.Field_ID) = 1
AND MAX(t.Field_ID) = 134;


输出量

| Company_ID |
| ---------- |
| 2          |




View on DB Fiddle

关于mysql - 如何计算具有特定值的行(ID),如果MySQL中相同的ID具有其他值,该如何排除呢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56970303/

10-12 01:28