sql 如何查询表的某一列是否包含另外一个表的某列值

问题如下图所示

原表B:

1)实现一对一:

SQL:

SELECT DISTINCT CUSTOMER,REGEXP_SUBSTR(SHANGPIN, '[^,]+', 1, LEVEL) AS SHANGPIN  

FROM CUSTOMERS  

CONNECT BY LEVEL <= LENGTH(SHANGPIN) - LENGTH(REGEXP_REPLACE(SHANGPIN, ',', ''))+1

2)最终效果实现:

SQL:

SELECT A.SHANGPIN 产品,COUNT(A.CUSTOMER) 购买客户数 

FROM (SELECT DISTINCT CUSTOMER,REGEXP_SUBSTR(SHANGPIN, '[^,]+', 1, LEVEL) SHANGPIN  

FROM CUSTOMERS  

CONNECT BY LEVEL <= LENGTH(SHANGPIN) - LENGTH(REGEXP_REPLACE(SHANGPIN, ',', ''))+1) A 

GROUP BY SHANGPIN

这里我用的是Oracle数据库,如果你用的别的数据库,应该也有功能类似的相关函数。

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-02-09
把表B先拆分,每个产品一行

sql 如何查询表的某一列是否包含另外一个表的某列值
1)实现一对一:SQL:SELECT DISTINCT CUSTOMER,REGEXP_SUBSTR(SHANGPIN, '[^,]+', 1, LEVEL) AS SHANGPIN FROM CUSTOMERS CONNECT BY LEVEL <= LENGTH(SHANGPIN) - LENGTH(REGEXP_REPLACE(SHANGPIN, ',', ''))+1 2)最终效果实现:SQL:SELECT A.SHANGPIN 产品,COUNT(A.CUSTOMER) 购买客户数 ...

sql中如何判断某个表中的一个字段的值是不是在另一个表中的某个字段的...
select top 5 substring(ContactName,charindex(' ',ContactName)+1,len(ContactName)) as [Last Name] from customers CHARINDEX函数找到First Name和Last Name之间的空格,所以SUBSTRING函数可以分开ContactName列,这样就只有Last Name被选出。在CHARINDEX函数返回的整数上加1,这样Last Name不是从空格开...

sql语句 判断表数据是否存在另一个表中
1、首先在桌面上,点击“Management Studio”图标。2、其次在窗口中,点击“新建查询”按钮。3、接着在窗口中,输入判断表数据是否存在另一个表中的SQL语句“select test1.no from test1 where EXISTS(select * from test2 where test1.no=test1.no)”。4、再者在窗口中,点击“执行”按钮。5、最...

sql语句 如何判断A表中的a列数据是否在B表中的b列中存在
用exists如楼上所说~

SQL中如何查询A表中的数据有部分存在B表中并显示出来
SQL中查询A表中的数据有部分存在B表中并显示出来,可以参考下面几种方法:1、select * from B表 where item_no in (select 条码 from A表)2、select * from A表,B表 where A表.条码=B表.item_no

mysql数据库查询 查询一张表某列中是都包含另一张表某列的数据
select t1.id,t1.content,t2.sentencefrom 微博信息表 t1 join 负面词汇表 on instr(t1.content,t2.sentence)>0不知道这2个表的具体关系,如微博信息表中的id与负面词汇表中的id是都是微博信息的id?

sql查询一张表多列对应另一张表的值
一、建表:create table zhidao_20131010_1_tab1 (id varchar2(2),account1 varchar2(10),account2 varchar2(10),account3 varchar2(10));create table zhidao_20131010_1_tab2 (id varchar2(2),account varchar2(10),accname varchar2(10));二、插入记录:insert into zhidao_20131010_1_tab...

怎么用sql语句查询某列的值包含某列的值
SELECT t.a FROM 表 t WHERE EXISTS( SELECT 1 FROM 表 t2 WHERE t.a LIKE '%' + t2.b + '%' )

SQL中模糊查找一列包含另一列的数据,请高手指导,谢谢!
用链接字符串 table.某列 like concat('%',t2.某列,'%')懂了么? 附加:用左链接可以清除笛卡尔积。不懂继续问。

用sql 语句 怎么样查询一张表的所有内容 和 另一张表的部分内容? 求解...
A LEFT JOIN B ON A.列=B.列 SELECT A表需要的列名,B表需要的列名[,……] FROM A RIGHT JOIN B ON A.列=B.列 SELECT A表需要的列名,B表需要的列名[,……] FROM A OUT JOIN B ON A.列=B.列 几种方式都可以,看你的条件需要的是那种..正常的来说,第一个SQL 就可以满足你了 ...

相似回答