输入:我有一个包含(任意数量)用户提供的字符串的表:
?????????
? Value ?
?????????
? To ?
? An ?
?????????
Run Code Online (Sandbox Code Playgroud)
以及用户详细信息表:
?????????????????????
? UserID ? UserName ?
?????????????????????
? 12 ? Tom ?
? 132 ? Ann ?
? 32 ? Dina ?
? 2 ? Mark ?
?????????????????????
Run Code Online (Sandbox Code Playgroud)
我需要一个查询来返回用户表中的所有记录,其中UserName是Value输入表中任何记录的部分字符串匹配。这种情况下的预期输出是:
?????????????????????
? UserID ? UserName ?
?????????????????????
? 12 ? Tom ?
? 132 ? Ann ?
?????????????????????
Run Code Online (Sandbox Code Playgroud) 不久前(大约 2004 年),我在一个团队中担任后端开发人员,每个人都使用 where 子句加入。作为使用内/外连接的支持者,我向他们展示了一个 where 子句连接的示例,该示例说明了它如何根据数据产生不明确的结果,以及外连接如何避免该问题。
我必须做同样的演示,但再也找不到那个片段了。它在我的文件档案中的某个地方,不幸的是我无权访问。有没有人有一个方便的例子?
假设表中有 4 列。
cpt,cpt4mod,itemcharge,eff_date.
Run Code Online (Sandbox Code Playgroud)
条件1:如果值cpt,cpt4和itemcharge是一样的,但是eff_date是不同的。然后我需要根据eff_date.
condtition2:如果值cpt和cpt4是相同的,但eff_date并itemcharge不同。然后我需要根据eff_date.
条件3:如果所有列都具有相同的值,那么我需要根据 eff_date
条件 4:如果 的值cpt,cpt4and,eff_date相同但itemcharge 不同。然后我需要获取除最新记录之外的所有记录
见下面的例子。ID_1和ID_A用于主键table_1和table_3分别。Table_2,主键是ID_1和ID_A。由于业务规则,ID_A连接到一个且只有一个ID_1via table_2。
我需要一个查询将返回所有行table_1其中,value_1 = 11并加入到的是,我需要只行从table_3有一个value_a = 'a',如果它加入到行中table_1,有一个value_1 = 11。
请参阅所需的结果。注意没有行
|1 | a |
Run Code Online (Sandbox Code Playgroud)
在结果集中因为value_afor id_a = 'b';
我试过左外连接,但ID_1都返回了。我也试过 CTE,无济于事。这是一个 SQL,我试过了。
Select ID_1, Value_1, ID_A, VALUE_A
From TABLE_1 t1
Join TABLE_2 t2 on t1.ID_1 = t2.ID_1
Left Outer Join TABLE_3 …Run Code Online (Sandbox Code Playgroud) 我有一个关于连接两个表的问题。
CREATE TABLE [dbo].[DCString] (
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[DCDistributionBoxID] [bigint] NOT NULL,
[CurrentMPP] [decimal](18, 2) NULL,
CONSTRAINT [PrimaryKey3] PRIMARY KEY CLUSTERED ( [ID] ASC )
)
ALTER TABLE [dbo].[DCString]
ADD CONSTRAINT [FK_DCString_DCDistributionBox] FOREIGN KEY([DCDistributionBoxID])
REFERENCES [dbo].[DCDistributionBox] ([ID])
CREATE TABLE [dbo].[StringData](
[DCStringID] [bigint] NOT NULL,
[TimeStamp] [datetime] NOT NULL,
[DCCurrent] [decimal](18, 2) NULL,
CONSTRAINT [PrimaryKey4] PRIMARY KEY CLUSTERED ( [TimeStamp] DESC, [DCStringID] ASC)
)
Run Code Online (Sandbox Code Playgroud)
该[StringData]表具有以下存储统计信息:
我现在想将[StringData]表中的数据与表中的数据连接起来[DCString]。 …
我有3张桌子。
我需要使用特定WHERE条件检查这些表中是否存在特定标识符。我需要从所有 3 个表中获取数据。
我已经试过LEFT JOIN,RIGHT JOIN而且FULL OUTER JOIN但我无法得到中间表的值。
我的查询尝试是:
Select t1.col1, t2.col2, t3.col3
from t1
left outer join t2
on t1.id=t2.id
full outer join t3
on t1.id=t3.id
where t.id= '101';
Run Code Online (Sandbox Code Playgroud)
我无法获得仅存在于 t2 表中的值。
我有一个视图,我在其中提取车辆的属性,例如轮胎尺寸、发动机容量、颜色、门数等。这些数据存储在多个表中,但我已将数据简化到我的视图中。
我想要实现的是将此视图加入我的主车辆表,以便我可以选择各种属性作为单行中的列。
我的看法:
Vehicle_ID Property Value
1 Doors 2
1 Engine Size 2 liter
1 Tire Size 50cm
1 Color Blue
2 Doors 4
2 Engine Size 3 liter
Run Code Online (Sandbox Code Playgroud)
还有我的主要车辆表:
Vehicle_ID Description Date_Bought Owner_ID
1 BMW M3 Sport 2000/12/23 1
2 Audi A5 3XL 2015/03/19 1
Run Code Online (Sandbox Code Playgroud)
所以我想出去的是
Vehicle ID Description Date_Bought Doors [Engine Size] [Tire Size] [Color]
1 BMW M3 Sport 2000/12/23 2 2 liter 50cm Blue
Run Code Online (Sandbox Code Playgroud)
我的整体 SQL 知识相当有限,我很擅长 JOINS 和其他东西,但是 PIVOT 命令的逻辑及其语法完全让我望而却步。
我在数据库中有两张表,一张是Orders,另一张是customers
订单表包含:订单 ID、客户 ID 和订单日期
客户表包含:CustomerID、CustomerName、ContactName 和 country
实际上,“Orders”表中的“CustomerID”列指的是“Customers”表中的“CustomerID”。上面两个表之间的关系是“CustomerID”列。
加入查询
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
Run Code Online (Sandbox Code Playgroud)
简单查询
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders,Customers
WHERE Orders.CustomerID=Customers.CustomerID;
Run Code Online (Sandbox Code Playgroud)
两个查询的结果是: OrderID 、 CustomerName 和 OrderDate
在上面的两个查询中,我得到了相同的结果。我想知道这些查询之间的区别,如果我们可以通过 SIMPLE 查询来实现,为什么要使用 JOIN?
我想LEFT JOIN在两个表上做一个,其中一个表有一个日期时间列,另一个表有一个日期列。当我在 SQL Server 中工作时,我曾经CONVERT将日期时间更改为日期。然后我写了 join 语句:
SELECT CONVERT(date,db1.dbo.table1.datecolumn), db2.dbo.table2.datecolumn
FROM db1.dbo.table1
LEFT JOIN db2.dbo.table2
ON db1.dbo.table1.datecolumn = db2.dbo.table2.datecolumn
Run Code Online (Sandbox Code Playgroud)
查询返回 table1 中的日期列,但 table2 中的列仅填充为 NULL 值。我不确定我做错了什么。我尝试CAST了CONVERT,而不是,但没有运气。转换有什么事情发生吗?任何帮助表示赞赏。
我处于需要查询数据库中的数据的情况,但正在努力解决如何正确形成查询的问题。基本上我需要从下表中获取数据:
Table: Contact
contact_id INT [Primary Key]
first_name VARCHAR(50)
last_name VARCHAR(50)
Table: Contact_Phone
contact_id INT [Foreign Key/Composite Primary Key]
phone_number VARCHAR(15) [Composite Primary Key]
extension VARCHAR(10), NULL
Table: Contact_Fax
contact_id INT [Foreign Key/Composite Primary Key]
fax_number VARCHAR(15) [Composite Primary Key]
Table: Contact_Email
contact_id INT [Foreign Key/Composite Primary Key]
email VARCHAR(100) [Composite Primary Key]
Run Code Online (Sandbox Code Playgroud)
现在并不是我Contacts桌子上的每个联系人都有电话、传真或电子邮件。有些人只有一部电话或传真。其他人只是一封电子邮件。我知道有一个联系人只有一个电话号码。
现在我的问题是,如果我尝试对所有这些表进行简单的查询以查找特定的联系信息,如果其中任何一个都没有条目(例如,我的一个没有传真或电子邮件的联系人) 然后我根本没有返回任何数据。
所以问题是,我如何将这个查询放在一起,以便如果我试图查找特定联系人的信息,即使其中一个发生,我仍然能够看到所有数据(电话/传真/电子邮件)是空白?
join ×10
sql-server ×7
query ×2
group-by ×1
mysql ×1
null ×1
oracle ×1
performance ×1
pivot ×1
t-sql ×1