【发布时间】:2021-09-25 03:01:26
【问题描述】:
我无法发出仅计算唯一记录的请求。
有一个表:bbs,列:
to_id - 发给谁from_id - 发给谁
SELECT COUNT(*) AS `count` FROM `bbs` WHERE `to_id`=? OR `from_id`=?
例如,您需要以下数据:
from_id to_id
1 2
2 1
1 3
1 4
1 2
也就是说,例如,我们是1。
而且它不应该像它目前认为的那样计算5,而是3。
您需要选择 2 列,只有唯一的列。
如何做到这一点?
【问题讨论】:
-
不清楚您要完成什么。您想要计数具有不同
from_id、不同to_id或from_id和to_id的不同组合的记录吗?您的样本如何表明唯一计数仅为 1? -
@kmoser,嗯,就是记录应该是一个,但是同一个ID可以在不同的列,这个也是需要考虑的。
-
也就是说,例如,我们是 1。 -- 为什么这在问题中很重要?我认为您需要用清晰的逻辑术语重申您的问题。没有清晰的逻辑,很难翻译成 SQL。
-
这组中的所有 4 对都是不同的。你是如何决定 1 是预期的答案?即使我们交换对使得我们有 (least(x, y), best(x, y)),答案仍然是 3 或 2,这取决于您是想忽略 (1, 2) 对还是只是将它们视为单个计数,然后是 (1, 3) 和 (1, 4)。
-
?s 在您的 SQL 中是什么意思?这是一个准备好的声明吗,我们只回答一对(?, ?)的问题?如果是这样,请提供参数值示例和相应的预期结果,并说明您用于确定该结果的逻辑。