当前位置:Gxlcms > PHP教程 > 请教两张表查询结果有重复的怎么办?

请教两张表查询结果有重复的怎么办?

时间:2021-07-01 10:21:17 帮助过:15人阅读

A表
id title
1 123
2 456
3 789
....
B表
id name
1 987
2 654
3 321
....
SQL代码为
select A表. * , B表. * from A表 A, B表 B where A.id in (1,2,3)
查询结果有重复数,怎么弄才不显示重复数??


回复讨论(解决方案)

你没有关联两表,有重复是必然的

这样?
select A表. * , B表. * from A表 A, B表 B where A.id=B.id A.id in (1,2,3)

更正
select A表. * , B表. * from A表 A, B表 B where A.id=B.id and A.id in (1,2,3)

更正
select A表. * , B表. * from A表 A, B表 B where A.id=B.id and A.id in (1,2,3)
但是两表的ID是不一样的

但是两表的ID是不一样的
既然两个表没有任何联系,你把他们硬老在一起做什么?乔太守?

本帖最后由 xuzuning 于 2013-04-07 18:57:31 编辑
引用 4 楼 u010184133 的回复:但是两表的ID是不一样的
既然两个表没有任何联系,你把他们硬老在一起做什么?乔太守?
字段没有关联,都是信息有关联的,只能用foreach 吗?

建议贴出表结果、测试数据和期望结果,并简单描述一下业务逻辑。

整个情况是这样的:
A表结构
id name info
1 栏目一 (存储样式为a:{s:6:"picid";s:2:"74";s:9:"text";s:1:"存储内容区";})
2 栏目二 (存储样式为a:{s:6:"picid";s:2:"75";s:9:"text";s:1:"存储内容区";})
B表结构
id url
74 图片路径
首先通过查询获取到了A表info中picid的id号为74,75的数组
输出样式为:
Array
(
[0] => 74
[1] => 75
)
然后在查询B表id为74,75的数据
然后如何关联输出这2张表的内容呢?
输出结果如何为:
Array
(
[0] => Array
(
[id] => 1
[name] => 栏目一
[url] => 图片路径
[info] => info中text的内容
)

[1] => Array
(
[id] => 2
[name] => 栏目一
[url] => 图片路径
[info] => info中text的内容
)
....

取出 info 中的 text 的内容的表达式
substring_index(substring_index(substr(info, locate('"text"', info)), '"', 4), '"', -1) as info

两表的关联条件
B表.id = substring_index(substring_index(substr(info, locate('"picid"', info)), '"', 4), '"', -1)

即然有重复,其实用Group by 分组一下,可以间接的去重复

取出 info 中的 text 的内容的表达式
substring_index(substring_index(substr(info, locate('"text"', info)), '"', 4), '"', -1) as info

两表的关联条件
B表.id = substring_index(substring_index(substr(info, l……
想请教下其中的4是指什么?

人气教程排行