gpt4 book ai didi

mysql - Laravel/MySQL 原始查询

转载 作者:行者123 更新时间:2023-11-29 18:27:04 24 4
gpt4 key购买 nike

不确定如何查询这个,但假设我有两个表

表1

| id         | userid      | points       |
|:-----------|------------:|:------------:|
| 1 | 1 | 30
| 2 | 3 | 40
| 3 | 1 | 30
| 4 | 3 | 40
| 5 | 1 | 30
| 6 | 3 | 40

表2

| id         | userid      | productid    |
|:-----------|------------:|:------------:|
| 1 | 1 | 4
| 2 | 3 | 4
| 3 | 1 | 3
| 4 | 3 | 3
| 5 | 1 | 3
| 6 | 3 | 3

我需要从表 1 中获取所有带有 s 的行,其中点高于 30 并且表 2 的 ProductID 为 4

目前我有一个像这样的原始查询:

SELECT userid, SUM(points) as points FROM table1 GROUP BY userid HAVING SUM(points) >= 30 ORDER BY SUM(points) DESC, userid 

通过DB::select

如何确保所有结果只有通过用户 ID 连接的 table2 的产品 ID 为 4?这是 join 适用的地方,然后我看到 leftjoin 和其他,所以我不太确定如何解决这个问题,任何建议表示赞赏。

编辑:

我刚刚开始工作:

SELECT userid, SUM(points) as points FROM table1 LEFTJOIN table2 on table1.userid = table2.userid WHERE table2.productid = '4' GROUP BY userid HAVING SUM(points) >= 30 ORDER BY SUM(points) DESC, userid 

它给了我正确的结果,但在 join/leftjoin 上不是 100% 确定,如果可以的话有什么反馈吗?

最佳答案

如果您使用内部联接,您将仅获得在productid =4 之间匹配的相关行并且仅求和

SELECT userid, SUM(points) as points 
FROM table1
inner join table2 on table1.id = table2.userid and productid=4
GROUP BY userid
HAVING SUM(points) >= 30
RDER BY SUM(points) DESC, userid

或者,如果您正在寻找拥有该产品的用户= 4,那么您可以使用

SELECT userid, SUM(points) as points 
FROM table1
inner join (
select distinct userid
from table2 where productid =4

) t on table1.id = t.userid
GROUP BY userid
HAVING SUM(points) >= 30
RDER BY SUM(points) DESC, userid

关于mysql - Laravel/MySQL 原始查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46094872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com