我正在使用这个MySQL查询
SELECT
t1.article_id,
t1.user_id,
t1.like_date,
(
SELECT
COUNT(*)
FROM liketbl t2
WHERE
t1.article_id=t2.article_id
) as totallike
FROM liketbl t1
WHERE
user_id = 1;
我需要在一次运行中获得文章ID,用户ID和喜欢的日期以及总条目数。 在我看来,子选择最容易实现这一点。 (不想在客户端环境中运行多个查询。 但是没有用。 不知道为什么,帮助被激活了。
答案 0 :(得分:1)
我的猜测是你需要在子查询中过滤user_id = 1
以获得你期望的结果。
where
仅对外部选择进行操作。
答案 1 :(得分:1)
这应该有效
SELECT
t1.article_id,
t1.user_id,
t1.like_date,
count(SELECT * FROM liketbl t2 WHERE
t1.article_id=t2.article_id ) as totallike
FROM liketbl t1
WHERE
user_id = 1;
答案 2 :(得分:1)
试试这个:
SELECT t1.article_id,
t1.user_id,
t1.like_date,
COUNT(*) as totallike
FROM liketbl t1 inner join liketbl t2 on t1.article_id=t2.article_id
WHERE user_id = 1
group by t1.article_id,t1.user_id,t1.like_date;
答案 3 :(得分:1)
标量子查询往往是最糟糕的情况,重写它们通常更有效。
根据两个表中的行数,这是使用派生表的另一种方法:
SELECT
t1.article_id
,t1.user_id
.t1.like_date
,t2.totallike
FROM liketbl t1
JOIN
(
SELECT
article_id
,COUNT(*) AS totallike
FROM liketbl
GROUP BY article_id
) AS t2
ON t1.article_id=t2.article_id
WHERE
user_id = 1;