假设我需要一个查询来按月查看销售结果,并且我希望结果集包含每个月的结果,无论该月是否有任何销售。
假设我的表“sales”有“sales_date”和“sales_amount”列,我希望结果集如下所示:
一月 100.00
二月 240.00
三月 0.00
四月 430.00
因此,如果我想按月对值求和并且没有任何 Mar 的记录,我仍然希望看到 Mar 的结果为 0。我该怎么做?
我有这个表结构和数据:
CREATE TABLE IF NOT EXISTS `default_relations_users` (
`id_user_rq` int(11) NOT NULL,
`id_user_ap` int(11) NOT NULL,
UNIQUE KEY `rusers_rq_ap_idx` (`id_user_rq`,`id_user_ap`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `default_relations_users` (`id_user_rq`, `id_user_ap`) VALUES
(1, 2),
(1, 3),
(1, 4),
(2, 1),
(2, 2),
(2, 3);
Run Code Online (Sandbox Code Playgroud)
我只需要获取值在左侧但不在右侧的行,例如:将不会选择 1,2 和 2,1 但 1,3 和 1,4 是。我试试这个查询:
SELECT * FROM default_relations_users
WHERE default_relations_users.id_user_rq = 1
AND NOT EXISTS (SELECT id_user_ap FROM default_relations_users WHERE id_user_ap = 1)
Run Code Online (Sandbox Code Playgroud)
也许我不明白子查询是什么意思,或者我以错误的方式使用。所以有什么帮助吗?
我有一个带有架构的 sqlite 数据库
Articles
Id
Name
Tags
Id
Name
ArticlesTags
Id
ArticleId
TagId
Run Code Online (Sandbox Code Playgroud)
我正在尝试查询 Articles.Name 和标签列表。基本上我想要的是:
Name1, (tag1,tag2,tag3)
Name2, (tag3,tag2)
Run Code Online (Sandbox Code Playgroud)
这可能吗?我缺乏语言来解释我真正想做的事情,它叫什么?
我发现将多行中的列合并为单行,但它似乎仅限于 SQLServer 和内置 xml 功能的使用。
这是我到目前为止所拥有的。我知道这有效,但我需要获得 和 的平均值,pulse而depressionlevel不是为每一行返回实际值:
SELECT
Patients.LastName
, PatientVisit.Pulse AS [avg Pulse]
, PatientVisit.DepressionLevel AS [avg Deplevel]
FROM Patients
INNER JOIN PatientVisit on Patients.PatientKey = PatientVisit.PatientKey
ORDER BY
Patients.LastName
Run Code Online (Sandbox Code Playgroud) 注意:我使用 MSSQL 2008,但我想它对许多其他数据库引擎有效 我有这个表“用户”:
用户 ID 用户国家 ID 1 用户 1 1 2 用户 2 2 3 用户 3 3 4 用户 4 4 5 用户 5 4 6 用户 6 3
而这张表“国家”
CountryID 国家 1 MX 2 美国 3 CAN 4 英格兰
如您所见,每个用户都属于一个国家。
如果我想知道,我在用户表上至少拥有一个用户的所有不同国家/地区,现在我执行以下查询:
select distinct country
from Users inner join
countries on users.CountryID=countries.CountryID
Run Code Online (Sandbox Code Playgroud)
并实现下一个结果集:
能够 英国 MX 美国
这确实是所有不同的国家,其中我在 muy 表 Users 上至少有一个用户。
我的疑问是,是否可以在不使用“DISTINCT”的情况下实现上述结果集,我的意思是只使用 JOINS 和条件?
这是 de DDL 脚本:
使用 [测试] 走 /****** 对象:表 [dbo].[用户] 脚本日期:09/21/2012 16:21:14 …
我有一张这样的表:
Id Status
-- -----------
1 Closed
1 In progress
2 Rejected
3 Cancelled
4 Rejected
4 Closed
5 In progress
Run Code Online (Sandbox Code Playgroud)
我想说明,有行Status的封闭,拒绝或取消。但是,我想排除具有不同状态值的 ID,即使它们也具有这三个中的任何一个。
所以,对于我的例子,我希望输出是这样的:
Id Status
-- ---------
2 Rejected
3 Cancelled
4 Rejected
4 Closed
Run Code Online (Sandbox Code Playgroud)
我的查询应该是什么样的?
我只有一张表,其中包含 3 列旅行公司。它显示了从 A 市到 B 市等地的公共汽车。我想知道这条路线被使用了多少次。我可以很容易地找到从 A 到 B 的一种方法,但我希望这个程序在同一行中从 B 到 A 自动求和。
在这种情况下,A以B等同于B对A。要求是为任意两个任意(和不同的)点和)获得 (( Xto Y) + ( Yto X))的 COUNT 。XY
示例表
ID | FROM | TO
1 | A | B
2 | C | D
3 | B | A
4 | C | A
5 | D | C
Run Code Online (Sandbox Code Playgroud)
答案应该是
Route AB = 2
Route CD = 2
Route …Run Code Online (Sandbox Code Playgroud) 在SELECT查询中
SELECT b.id, MIN(IFNULL(a.views,0)) AS counted
FROM table1 a JOIN table2 b ON a.id=b.id GROUP BY id
HAVING counted>0
Run Code Online (Sandbox Code Playgroud)
我怎么能拒绝此查询UPDATE作为
UPDATE b.number = counted
Run Code Online (Sandbox Code Playgroud) 我正在使用包含大量 NULL 的 SQL Server 数据库。为了分析我的数据,我想提取数据库表的所有行,包括少于 x 个 NULL 标记(例如 x=2)。
我的数据库类似于这个结构:
c1 c2 c3 c4 c5
-----------------------------------------------------
2 3 NULL 1 2
2 NULL NULL 1 2
2 3 NULL NULL 2
NULL 3 NULL 1 NULL
2 3 NULL 1 2
Run Code Online (Sandbox Code Playgroud)
我尝试了查询,它没有返回错误,但没有选择任何行:
SELECT * FROM test123
WHERE ((ISNULL(c1,1) + ISNULL(c2,1) + ISNULL(c3,1) + ISNULL(c4,1) + ISNULL(c5,1)) < 2);
Run Code Online (Sandbox Code Playgroud)
我希望此查询返回第一行和第五行,但结果包含 0 行。
我无法测试以下代码,因为我没有在数据库上写入的权限,但这里有一个(伪)代码,用于创建像我这样的表:
CREATE TABLE test123(
c1 float,
c2 float,
c3 float,
c4 float,
c5 float
) GO
INSERT …Run Code Online (Sandbox Code Playgroud) 我创建了一个临时表并插入了如下所示的值。
create table #temp( val int );
insert into #temp values(333);
insert into #temp values(222);
insert into #temp values(111);
Run Code Online (Sandbox Code Playgroud)
在查询下面的 select 语句时,我得到了 333 作为答案。
Select *
from #temp a
Where 1 =(
Select COUNT(VAL)
from #temp b
where a.val <= b.val
);
Run Code Online (Sandbox Code Playgroud)
结果:
val
333
Run Code Online (Sandbox Code Playgroud)
您能否帮助我了解 SQL Server 是如何使用此解决方案的。