首頁  >  文章  >  後端開發  >  请教两张表查询结果有重复的怎么办?

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

WBOY
WBOY原創
2016-06-23 14:05:06950瀏覽

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是指什么?

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn