Heim  >  Artikel  >  Backend-Entwicklung  >  请教两张表查询结果有重复的怎么办?

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

WBOY
WBOYOriginal
2016-06-23 14:05:06950Durchsuche

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:为什么要禁用fsockopen?Nächster Artikel:问个关于查询的问题