mysql中的子查询计数
我有下面的查询,它成功地获取了我要查找的数据mysql中的子查询计数,mysql,count,subquery,Mysql,Count,Subquery,我有下面的查询,它成功地获取了我要查找的数据 $query = @"SELECT table1.user_id, table1.col8, table2.col5, user_tokens.expiry FROM table1 INNER JOIN table2 ON table1.user_id=table2.user_id INNER JOIN user_tokens ON user_tokens.user_id=table1.user_id WHERE table1.col2 = '
$query = @"SELECT table1.user_id, table1.col8, table2.col5, user_tokens.expiry
FROM table1
INNER JOIN table2
ON table1.user_id=table2.user_id
INNER JOIN user_tokens
ON user_tokens.user_id=table1.user_id
WHERE table1.col2 = '{$userName}'";
我一直在玩弄它,以便在不进行第二次查询的情况下为我提供一些额外的数据。我想要的数据是另一个表(table10)中的行计数,该表的user_id列与user_id列匹配
所以有点像
,
它当前为我提供了整个表的行数,而不仅仅是与表1具有相同用户id的行
我认为我所做的内部联接只会计算用户id列与查询其余部分匹配的table10行,以及我尝试的联接table10的不同方式,或者使用额外的where来表示table10.user\u id=table1.user\u id失败的位置
有没有一种简单的方法可以做到这一点,或者我需要两个单独的查询?关于这一点,有很多可能的解决方案,其中一个是通过一个子查询进行连接,该子查询分别获取每个组的总计数
SELECT table1.user_id,
table1.col8,
table2.col5,
user_tokens.expiry,
COALESCE(b.totalDataCount, 0) userDataCount
FROM table1
INNER JOIN table2
ON table1.user_id=table2.user_id
INNER JOIN user_tokens
ON user_tokens.user_id=table1.user_id
INNER JOIN
(
SELECT user_ID, COUNT(*) totalDataCount
FROM table10
GROUP BY user_ID
) b ON b.user_id = table1.user_id
WHERE table1.col2 = '{$userName}
在这方面有很多可能的解决方案,我举例说明的一个是通过一个子查询进行连接,该子查询分别获取每个组的总计数
SELECT table1.user_id,
table1.col8,
table2.col5,
user_tokens.expiry,
COALESCE(b.totalDataCount, 0) userDataCount
FROM table1
INNER JOIN table2
ON table1.user_id=table2.user_id
INNER JOIN user_tokens
ON user_tokens.user_id=table1.user_id
INNER JOIN
(
SELECT user_ID, COUNT(*) totalDataCount
FROM table10
GROUP BY user_ID
) b ON b.user_id = table1.user_id
WHERE table1.col2 = '{$userName}
谢谢大家!!从table.user\u id=table1.user\u id的表中选择COUNT*!!吉迪·埃文。我正在寻找一个按钮,但看不到一个。我该怎么做标记?谢谢大家!!从table.user\u id=table1.user\u id的表中选择COUNT*!!吉迪·埃文。我正在寻找一个按钮,但看不到一个。我如何标记它?
SELECT
table1.user_id,
table1.col8,
table2.col5,
user_tokens.expiry,
(SELECT COUNT(*)
FROM table
WHERE table.user_id=table1.user_id) as uCount
FROM table1
INNER JOIN table2
ON table1.user_id=table2.user_id
INNER JOIN user_tokens
ON user_tokens.user_id=table1.user_id
WHERE table1.col2 = '{$userName}'";