我有一个关于MYSQL中的选择查询的问题
我有两个不同的表,我想获得一定的结果
我使用了COUNT方法,该方法只给我结果(> = 1)
但实际上,我想使用包含零的所有计数怎么做?
我的查询是:
SELECT
first.subscriber_id,
second.tag_id,
COUNT(*)
FROM
content_hits first
JOIN content_tag second ON first.content_id=second.content_id
GROUP BY
second.Tag_id,first.Subscriber_id<br>
第一张桌子:Content_hits
CONTENT_ID SUBSCRIBER_ID
30 1
10 10
34 4
32 2
40 3
28 3
30 6
31 8
12 3
第二张表:Content_tag
CONTENT_ID TAG_ID
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
11 2
12 2
13 2
14 2
结果但不完整 例如:tag_id = 1的Subsrciber6应该具有count(*)= 0
subscriber_id tag_id COUNT(*)
1 1 4
2 1 7
3 1 2
4 1 1
5 1 3
7 1 2
8 1 1
9 1 1
10 1 3
1 2 2
2 2 3
3 2 2
现在,您已经进一步详细说明了您实际想要实现的目标,可以看出该问题要复杂得多。你真正想要的所有组合subscriber_id
和tag_id
,再算上在连接表产品实际的条目数。。所以这是SQL:
SELECT combinations.tag_id,
combinations.subscriber_id,
-- correlated subquery to count the actual hits by tag/subscriber when joining
-- the two tables using content_id
(SELECT count(*)
FROM content_hits AS h
JOIN content_tag AS t ON h.content_id = t.content_id
WHERE h.subscriber_id = combinations.subscriber_id
AND t.tag_id = combinations.tag_id) as cnt
-- Create all combinations of tag/subscribers first, before counting anything
-- This will be necessary to have "zero-counts" for any combination of
-- tag/subscriber
FROM (
SELECT DISTINCT tag_id, subscriber_id
FROM content_tag
CROSS JOIN content_hits
) AS combinations
问题内容: 这可能比我做的要容易,但是基本上我需要做的是选择列中具有最接近数字的行作为指定值。例如: 数据库中指定列中的3行的值列表:10、15、16 如果我指定我想要最接近14的行,它将选择15的行。 另外,如果有2+行相同的距离,则随机选择其中之一。 问题答案: 一种选择是遵循以下方式: 要选择随机记录,可以将其添加到子句中。这种方法的缺点是您不能从索引中得到任何好处,因为您必须对派生值进行排
本文向大家介绍MySQL选择按值计数?,包括了MySQL选择按值计数?的使用技巧和注意事项,需要的朋友参考一下 您可以为此使用功能。让我们首先创建一个演示表 使用insert命令在表中插入一些记录。查询如下- 使用select语句显示表中的所有记录。查询如下- 以下是输出 这是选择按值计数的查询 以下是输出
问题内容: 我有三个表的简单文章应用程序: 在登录页面上,我想显示最新文章标题以及作者姓名和文章评论总数。主要问题是如何获取文章的评论总数,我没有弄对。我应该得到以下输出: 在我的实际应用程序中,我在文章表中添加了一个列,以显示对该文章的评论总数。当新注释添加到系统时,此列将更新。这样做的问题是,在添加新评论时,文章表被锁定了。在我的应用程序中,每分钟都会添加很多评论。因此,我试图避免通过重写SQ
问题内容: 嗨,我有一个带有日期字段和一些其他信息的表。我想选择过去一周(从星期日开始的一周)中的所有条目。 表值: 我想选择上周的所有ID,预期输出为5、6、8 (ID 2不在上周,ID 15在本周。) 怎么写和SQL Query相同。 问题答案:
基本上,对于每个user_id,我需要类似的东西, 我想最终的结果只是返回所有的总数。
问题内容: 我有一个Oracle表,其中包含一组范围(RangeA和RangeB)。这些列是varchar,因为它们可以同时容纳数字和字母数字值,如以下示例所示: 我需要执行一个查询,该查询仅返回具有数值的记录,并对该查询执行Count。到目前为止,我已经尝试过使用两个不同的查询来做到这一点,但没有任何运气: 查询1: 查询2: 子查询工作正常,因为我得到的两个记录都只有数字值,但是查询的COUN