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

WBOY
发布: 2016-06-23 14:05:06
原创
948 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板