test1表:
id uname:
1 张三
test2表:
id test1id score:
1 1 2
2 1 1
test3表:
id test1id price
1 1 1
2 1 1
查出结果:
uname SUM(te.score) SUM(tes.prices)
张三 6 4
想查出结果:
uname score price
张三 3 2
我写的
SELECT uname,SUM(te.score),SUM(tes.prices) FROM test1 t1 LEFT JOIN test2 t2 ON t2.test1_id=t1.id LEFT JOIN test3 t3 ON t3.test1_id=t1.id
GROUP BY uname
单表链接两次数据会相加,应该怎么写呢
回答部分参考、引用ChatGpt以便为您提供更准确的答案:
根据您的需求,您可以使用子查询来实现您想要的结果。以下是示例的SQL查询语句:
SELECT t1.uname, (SELECT SUM(score) FROM test2 t2 WHERE t2.test1id = t1.id) AS score, (SELECT SUM(price1) FROM test3 t3 WHERE t3.test1id = t1.id) AS price
FROM test1 t1
WHERE t1.uname = '张三'
该查询语句使用子查询来分别计算test2表中指定test1id的score总和和test3表中指定test1id的price总和,并通过左连接(LEFT JOIN)将结果与test1表关联,最后按照指定的uname进行筛选。
请注意,上述查询语句中的条件和字段名是根据您提供的表结构进行推测的,如果表结构有所不同,请适当调整查询语句中的表名、字段名和条件。
不知道你这个问题是否已经解决, 如果还没有解决的话:我的具体需求是查询三张表的数据,其中有两个链接相同的字段,但是链接后数据会重复增加,我希望优化查询结果,使数据不重复增加,最终查询结果包含三个字段:用户名,积分和价格。