Mysql 在查询中合并计数

Mysql 在查询中合并计数,mysql,Mysql,如何使用count获得与LIKE查询匹配的所有记录的计数 我有一个表关键字定义为 +------+-------+-----------------+ | id | photo | keyword | +------+-------+-----------------+ | 3504 | 664 | 2013 | | 3505 | 664 | bl elfring | | 3506 | 664 | indoor track |

如何使用count获得与LIKE查询匹配的所有记录的计数

我有一个表
关键字
定义为

+------+-------+-----------------+
| id   | photo | keyword         |
+------+-------+-----------------+
| 3504 |   664 | 2013            |
| 3505 |   664 | bl elfring      |
| 3506 |   664 | indoor track    |
| 3507 |   664 | people          |
| 3508 |   664 | 1-5_it_0128.jpg |
+------+-------+-----------------+
照片
部分定义为

+-----+-------------------+-------------+--------------+------------+
| ID  | name              | photo_width | photo_height | date_taken |
+-----+-------------------+-------------+--------------+------------+
| 760 | 12-8_mbb_0072.jpg |         425 |          600 | 2012-12-08 |
| 759 | 12-8_mbb_0071.jpg |         459 |          600 | 2012-12-08 |
| 758 | 12-8_mbb_0069.jpg |         457 |          600 | 2012-12-08 |
| 757 | 12-8_mbb_0057.jpg |         395 |          600 | 2012-12-08 |
| 756 | 12-8_mbb_0050.jpg |         800 |          468 | 2012-12-08 |
+-----+-------------------+-------------+--------------+------------+
keywords.photo
引用photos.ID和
keywords.keywords
是与该图像关联的IPTC关键字

我想获得与特定关键字关联的所有图像的计数

到目前为止,

SELECT COUNT(keywords.photo) AS keyword_count, keywords.keyword 
FROM keywords INNER JOIN photos ON keywords.photo = photos.ID
WHERE keywords.keyword LIKE '%nic%'
返回

+---------------+-------------+
| keyword_count | keyword     |
+---------------+-------------+
|            31 | nicole **** |
+---------------+-------------+
+----------------+
| keyword        |
+----------------+
| nicole ****    |
| nicole ******* |
| bonny **nic*   |
| nicole ******  |
+----------------+
但是,

SELECT DISTINCT keyword
FROM keywords
WHERE keyword LIKE '%nic%'
返回

+---------------+-------------+
| keyword_count | keyword     |
+---------------+-------------+
|            31 | nicole **** |
+---------------+-------------+
+----------------+
| keyword        |
+----------------+
| nicole ****    |
| nicole ******* |
| bonny **nic*   |
| nicole ******  |
+----------------+

如何获取包含第二次查询结果的计数字段?

要按唯一关键字分组:

SELECT COUNT(keywords.photo) AS keyword_count, keywords.keyword 
FROM keywords INNER JOIN photos ON keywords.photo = photos.ID
WHERE keywords.keyword LIKE '%nic%'
GROUP BY keywords.keyword

要按唯一关键字分组:

SELECT COUNT(keywords.photo) AS keyword_count, keywords.keyword 
FROM keywords INNER JOIN photos ON keywords.photo = photos.ID
WHERE keywords.keyword LIKE '%nic%'
GROUP BY keywords.keyword

如果我理解正确,您想要与给定关键字匹配的照片数量?如果是这种情况,您可以使用以下条款:


这将根据
keywords.keyword
列对结果进行分组,总计数为每个结果的使用次数。请注意,以这种方式匹配/分组的“关键字”是唯一的-它不会按部分匹配进行分组(即,
“bonny**nic*
不同于
nicole******
)。

如果我理解正确,您想要匹配给定关键字的照片数量?如果是这种情况,您可以使用以下子句:


这将按
关键字对结果进行分组。关键字
列包含每个关键字使用的总次数。请注意,以这种方式匹配/分组的“关键字”是唯一的-它不会按部分匹配进行分组(即
“bonny**nic*
不同于
nicole*****
).

为了澄清,在下一次查询中,您的计数结果应该是1,不是吗?为了澄清,在下一次查询中,您的计数结果应该是1,不是吗?谢谢。我只是在名称中加了星号,以保护身份,同时保持匹配。谢谢。我只是在名称中添加了星号,以保护身份,同时保持匹配。