小编202*_*db9的帖子

根据第三个表的数据连接两个表

我有 3 个表,为了本练习的目的,我们将它们称为:产品、价格和折扣。仅当在 Discount.ProductID(折扣表中的 ProductID 列)中找到 ProductID 时,我才尝试加入 Products 和 Price 表。

产品:

产品ID 尺寸 颜色 参考号#
A1234 小的 蓝光 0C94
B5678 医学 红色的 1D96

价格:

参考号# 根据 税
0C94 3.48 0.96

折扣:

产品ID 列表 地点
A1234 二 三

我熟悉联接,所以我的代码开始为:

SELECT * FROM Product as a
left join Price as b
on a.Ref# = b.Ref#
Run Code Online (Sandbox Code Playgroud)

但我从未在基于第三个表的 where 子句中嵌套约束(如果这甚至是正确的方法)。任何建议将不胜感激。最终结果将是一个仅显示一种产品的新产品表,因为 ProductID B5678 不在 Discount 表中。

mysql sql

1
推荐指数
1
解决办法
4683
查看次数

选择具有最长唯一字符串的行

我试图弄清楚如何从表中选择行的子集,并为每个“父”字符串选择最长的唯一字符串。我将在下面提供表格示例以及我的不起作用的代码。

当前表:

姓名 销售价格
北美\美国\东北部\纽约 8576
北美\美国\东北 2598
南美洲\巴西 1348
南美洲\智利\东北 9726
南美洲\智利 4412
北美\加拿大\安大略省 3894
北美\加拿大 6321

期望的输出:

姓名 销售价格
北美\美国\东北部\纽约 8576
南美洲\巴西 1348
南美洲\智利\东北 9726
北美\加拿大\安大略省 3894

最初,我认为我可以根据反斜杠的数量应用某种形式的逻辑(

example: SELECT * FROM TestTable WHERE Name LIKE '%\\%'
Run Code Online (Sandbox Code Playgroud)

)。然而,这种逻辑不起作用,因为某些名称最远的分支可能只有 1 个反斜杠,而其他名称可能有 3 个以上。

生成测试表的代码如下,任何帮助/建议将不胜感激

create table t1( 
[name] varchar(60), 
[saleprice] int  );


insert into t1 values ('NorthAmerica\US\Northeast\NewYork',8576);
insert into t1 values ('NorthAmerica\US\Northeast',2598);
insert into t1 values ('SouthAmerica\Brazil',1348);
insert into t1 values ('SouthAmerica\Chile\NorthEast',9726);
insert into t1 values ('SouthAmerica\Chile',4412);
insert into …
Run Code Online (Sandbox Code Playgroud)

sql sql-server exists where-clause sql-like

1
推荐指数
1
解决办法
75
查看次数

标签 统计

sql ×2

exists ×1

mysql ×1

sql-like ×1

sql-server ×1

where-clause ×1