Mysql SQL:如果行(在另一个表中)存在,则选择一个新列,该列为true
我的表中有如下列:Mysql SQL:如果行(在另一个表中)存在,则选择一个新列,该列为true,mysql,sql,Mysql,Sql,我的表中有如下列: Customer: cid, blah Product: pid, blah Order: cid, pid 1 1 false 1 2 true 1 3 true 1 4 false 2 1 true 2 2 false 2 3 false 2 4 true 3 1 false 3 2 false 3 3 true 3 4 false 我想要包含以下列的结果表: Customer: cid, blah Product: pid, b
Customer: cid, blah
Product: pid, blah
Order: cid, pid
1 1 false
1 2 true
1 3 true
1 4 false
2 1 true
2 2 false
2 3 false
2 4 true
3 1 false
3 2 false
3 3 true
3 4 false
我想要包含以下列的结果表:
Customer: cid, blah
Product: pid, blah
Order: cid, pid
1 1 false
1 2 true
1 3 true
1 4 false
2 1 true
2 2 false
2 3 false
2 4 true
3 1 false
3 2 false
3 3 true
3 4 false
cid,pid,(当该行的(cid,pid)顺序为“false”时,此列为“true”)
例如:
Customer: cid, blah
Product: pid, blah
Order: cid, pid
1 1 false
1 2 true
1 3 true
1 4 false
2 1 true
2 2 false
2 3 false
2 4 true
3 1 false
3 2 false
3 3 true
3 4 false
客户
1 blah
2 blah
3 blah
1 2
1 3
2 1
2 4
3 3
产品
1 blah
2 blah
3 blah
4 blah
订单
1 blah
2 blah
3 blah
1 2
1 3
2 1
2 4
3 3
我想找到具有以下结果的sql查询:
Customer: cid, blah
Product: pid, blah
Order: cid, pid
1 1 false
1 2 true
1 3 true
1 4 false
2 1 true
2 2 false
2 3 false
2 4 true
3 1 false
3 2 false
3 3 true
3 4 false
我试图找出那个疑问,但仅限于我的知识。有人知道如何写这个查询吗
//对不起,忘了提一下我希望结果中也包含客户和产品的废话
cid, blah, pid, blah, true/false
你需要一份案例陈述
您可以
交叉
和左
连接和大小写..当
条件语句为:
select c.cid, p.pid,
( case when o.cid*o.pid > 0 then 'true' else 'false' end )
as flag
from product p
cross join customer c
left join order_ o on o.cid = c.cid and o.pid = p.pid
order by c.cid, p.pid;
p.S.订单是一个关键词,所以我用订单
这是最简单的方法:
请阅读并采取行动,点击谷歌的“stackexchange家庭作业”和向下投票箭头鼠标悬停文本。我认为工会下的代码不起作用。O中没有任何一行不是C交叉连接P中的。我认为应该是
客户C交叉连接产品P
而不是订单O
。您执行了吗?+1,因为这是最好的方法。但是,我不认为需要coalesce(o.cid,0)*coalesce(o.pid,0)
。检查任何一个字段就足够了,因为左连接基于两个条件(两列)。