我有一个既有男性也有女性的桌子(PK (Id),PersonsName,IsMale)。我希望得到一个随机的名字,但对男女都适用。示例:
Select Top 1 PersonsName
From MyTable
Where IsMale = '1'
Order by NewID()
Select Top 1 PersonsName
From MyTable
Where IsMale = '0'
Order by NewID()
我如何组合这些语句,以便从一条SQL语句中返回2条记录(1个男性和1个女性姓名)?
我以前在这里看到过,有人只是在同一个
我只是在网上冲浪,发现了一个类似如下的查询:
sql = "select milk_rate from special_milk_rate
where code_producer_id=? and effective_from <= ?
and effective_till >= ?"
这个查询到底是什么意思,我的意思是,有什么用?在这条语句中。
还有一件事是&在sql中的使用。
我把它放在一个SQL文件中,我假设end将结束这个存储过程:
create procedure Test4
as
begin
select * from People
end
select * from Region
但是,我得到了“命令成功完成”,当我查看存储的定义时,我得到了:
ALTER procedure [dbo].[Test4]
as
begin
select * from People
end
select * from Region
那么,在SQL Server中的存储过程中,如果BEGIN/END不是用来实际结束它的,那么它有什么用呢?
我有一个表,其中包含用户发送和发送的消息。如何使用SQL选择用户发送的所有消息。我想按MessageSenderUserID对结果进行分组。我也想只返回最近的每个收件人。
我试图在having子句中使用MAX,但这似乎不是正确的解决方案。
我最好将其描述为以下查询的组合:
SELECT TOP 1 MessageID, MessageSent, MessageSenderUserID, MessageRecipientUserID
FROM [Messaging_Message]
WHERE MessageSenderUserID = 799
ORDER BY MessageSent DESC
我目前正在对Microsoft SQL Server进行快速查询,该查询应返回去年具有最大事件数量的不同安装。 这就是我到目前为止所得到的,但我知道这不是正确的方式,并希望获得一些见解: SELECT
i.idInstalac, i.nomInstalac, COUNT(e.idEvento) as cantEventos
FROM
Instalacion i, Eventos e
WHERE
i.idInstalac = e.idInstalac
AND YEAR(e.fchEvento) = 2019
GROUP BY
我有以下疑问:
SELECT *
FROM
(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY Code ORDER BY Price ASC) as RowNum
from Offers) r
where RowNum = 1
Offers表包含大约1000万条记录。但那里只有大约4000个不同的代码。因此,我需要为每个代码获取价格最低的行,结果中将只有4000行。
我有一个索引(Code,Price)列,所有其他列都在INCLUDE语句中。
查询将运行2分钟。如果我看一下执行计划,我会看到索引扫描有10M个实际行。所以,我猜
我有一个搜索表单,我可以在其中按名称搜索:
if($v=$_POST['Name']){
$sql.=" AND CONCAT(' ',Name) LIKE '% $v%'";
}
if($v=$_POST['PriceU']){
$sql.=" AND Price BETWEEN '$_POST[PriceF]' AND '$_POST[PriceU]'";
}
if($v=$_POST['RateU']) {
下面是Server中MigratoryBirds表中的数据
birdType
1
4
4
4
5
5
5
3
创建上表的SQL脚本:
/****** Object: Table [dbo].[migratoryBirds] Script Date: 20-Jul-17 8:01:02 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[migratoryBirds](
[birdType] [int] NULL
) ON [PRIMARY]
GO
我的目标是得到那些
我已经能够成功地将Unicode值插入到我的数据库中,但无法通过java结果集检索它们。相同的查询从mysql查询浏览器获取数据。sql如下所示:
SELECT book_name FROM book_resource_user_view WHERE MATCH(book_name) AGAINST ('तेरा मुझसे है पेहला का नाता कोई') limit 25
在尝试select语句之前,我这样做了:
String query = "set names utf8";
state.executeUpdate(query)
我正在读一本SQL "cookbook“类型的参考资料,我看到了一个我以前从未遇到过的陈述:
INSERT INTO table (col1, col2)
SELECT t.col1, 8
FROM table AS t
WHERE t.col2 = 5
UNION ALL
SELECT 8, 8
现在让我感到困惑的是紧跟在SELECT语句后面的一个数字(在本例中是8)。在我有限的SQL经验中,我只遇到过后面跟着列名的SELECT查询。有人能告诉我这是做什么用的吗?谢谢!
我正在寻找SQL Server中类似的东西:
SELECT TOP n WITH TIES FROM tablename
我知道PostgreSQL中的LIMIT,但是上面的等价物存在吗?我只是好奇,因为每次它都会为我保存一个额外的查询。
如果我有一个属性为nums:{10, 9, 8, 8, 2}的表Numbers。我想做一些类似的事情:
SELECT nums FROM Numbers ORDER BY nums DESC LIMIT *with ties* 3
它应该返回{10, 9, 8, 8},因为它需要前3个加上额外的8,因为它与另一个绑定在一起。
我有一个关于SQL语句中的子查询的问题。我要做的是找到从另一个查询返回的平均列结果的最短时间。
SELECT userID
FROM myTable
WHERE time = MIN(...)
SELECT userID, AVG(date_time)
FROM myTable
GROUP BY userID
第二个查询将返回由第三方组成的两次和组之间的平均值。
然后,我的第一个查询需要找到从第二个查询返回的最小平均时间。如何将这两个查询合并在一起?
第二个查询的示例数据如下:
user1 20
user2 45
user3 10
然后,对于第一个查询,我需要获得具有最小平均值的用户:
我有以下代码: *** Test Cases ***
Testing Connect to SQL Server
${queryTest} Execute Sql String SELECT * FROM users where Id='1'
#log to console ${queryTest} //This print NONE
#${query_results} SeleniumLibrary.Get Text ${queryTest}
#log to console ${query
我有一个示例查询(完全修改)如下:
with projects as (
select * from projectdetails
)
select * from projects
当我运行上面的查询时,它运行得很好。
但是当我再放一次select时,query..it就会抛出错误。
select * from
(
with projects as (
select * from projectdetails
)
select * from projects
)
错误:关键字'with‘附近的语法不正确。如果此语句是公共表表达式、xmlnamespaces子句或更改
因此,我的任务是编写一些SQL查询,这些查询涉及在不使用聚合函数的情况下找到分组中的最高值或最低值。例如,我有下表:
年龄:
Name Age
John 21
Bill 30
Laura 19
Timothy 23
Victoria 29
假设我想查询表中最老的人(在本例中是Bill),而不使用聚合函数(即计数、组等)
编辑我也不能在我的查询中使用分组!在我的第一篇博文中,我没有很清楚地说明这个区别,我的道歉=/
我很难通过:
SELECT name
FROM Ages
WHERE Ages.Age IN (
SELECT a
我有一个表,记录了基于辅助和代码的集合中的操作,下面的示例基本上是按序列号分隔的两个操作。我的问题是,如何使用SQL仅获取最新的序列集?
到目前为止,我可以使用下面的查询获得最新的序列号,但我觉得这不是最好的方法。
Select max(SequenceNo) as LatestSequence from tblLogs Where
1 = (Case when charindex(SecondaryID, @SecondaryID) > 0 then 1 else 0 end)
以下是示例表:
+----+---------------+------------+----------
我有一个需要日志输出的SQL查询列表,所以我使用MySQL命令行客户端。除了下面的查询之外,所有这些查询都会产生正确的输出,该查询会抛出语法错误。查询的目的是获取订购产品总数量最多的客户的CustID。我使用子查询,但这可能是错误的:
SELECT CUSTNUM FROM(
SELECT CUSTNUM, MAX(TOTALQTY) FROM(
SELECT CUSTNUM, SUM(QTY) AS TOTALQTY
FROM ORDERS GROUP BY CUSTNUM ORDER BY TOTALQTY DESC
) ORDERS
) ORDERS;
.
我有两个专栏,城市和人口。此查询的目标是返回具有人口最多的City的单行。我几乎没有使用SQL Server或数据库或查询的经验,因为我目前正处于我的第一个编程类中。此数据库链接到我正在使用C#和Visual创建的程序。我尝试过一些事情,比如:
SELECT City, Population FROM dbo.[Table] WHERE Population = Max(Population)
或
SELECT City, Max(Population) FROM dbo.[Table]
或
SELECT City, Population FROM dbo.[Table] ORDER BY P
所有人。我有一个表,其中一个列名是"All“,我想要获取这一列。我尝试使用下一个简单的查询:
SELECT All
FROM TableName
,但我有ORA-00936当我使用just时:
SELECT *
FROM TableName
我看到名称为"All“的required列。在表规范中,我看到了下面的SQL脚本:
create table TableName
(
houseid NUMBER not null,
id NUMBER not null,
note VARCHAR2(255),
all NUMBER
我对Server很陌生,并编写了以下查询:
SELECT ROW_NUMBER() over (ORDER BY TelNo ) as RowNum,
Telno
FROM [ClubEatc].[dbo].[GetOnlineBills]
where RowNum=1
当我运行该查询时,会得到以下错误:
Msg 207,第16级,状态1,第11线
无效列名“RowNum”。
我该怎么解决呢?
谢谢大家。
在,我正在试验如何针对它们的示例数据库提交自己的SQL查询,以使其更好地使用SQL。我想要做的是从客户中选择所有的国家,这些国家的元组数量最少。以下是我的查询尝试:
SELECT a.Country
FROM [Customer] a, (SELECT COUNT(*) AS Tot
FROM [Customer]
GROUP BY Country) b
GROUP BY a.Country
HAVING COUNT(*) = MIN(b.Tot)
但是,该网站返回一个空表,而不是正确的结果(爱尔兰、挪威、波兰)。通过将表按国家分组并使用COUNT(*),然后查看所有COUNT(*)值中COU
目前是否有计划将限制查询返回的结果数量的最佳方法标准化?
是否有一个ANSI SQL替代MYSQL限制关键字?的堆栈溢出问题列出了以不同语言处理此行为的各种方法:
DB2 -- select * from table fetch first 10 rows only
Informix -- select first 10 * from table
Microsoft SQL Server and Access -- select top 10 * from table
MySQL and PostgreSQL -- select * from table limit 10
Oracle
我在构建MYSQL查询时使用了反引号。例如,
SELECT `title` FROM `table` WHERE (`id` = 3)
与此相对的是:
SELECT title FROM table WHERE (id = 3)
我想我是从Phpmyadmin导出中得到这种做法的,据我所知,甚至Rails都是这样生成查询的。
但现在,我看到越来越少的查询像这样构建,而且,代码看起来更混乱,更复杂,在查询中使用了反引号。即使有SQL helper函数,没有它们事情也会更简单。因此,我正在考虑把它们抛在脑后。
我想知道在这种实践中是否还有其他的含义,比如SQL (在我的例子中是MySQL)解释速度
SQL Basic Select Statement: Exercise-24 with Solution 从下表中,编写SQL查询以查找1970年诺贝尔奖获得者的详细信息。按照主题对结果进行排序,除了“化学”和“经济学”将出现在结果集的末尾之外,其余均为升序。返回年份、主题、获奖者、国家和类别。 ? 解决方案 SELECT *
FROM nobel_win
WHERE year=1970
ORDER BY
CASE
WHEN subject IN ('Economics','Chemistry') THEN 1
ELSE 0
E
我正在使用Microsoft SQL Server。我有以下查询,不出所料,它按end_date返回选定的列、排序和排序。end_date的类型为datetime。 select
rank() over (order by end_date desc) rownum,
salary, name, end_date
from
employee
order by
end_date desc 我如何修改和/或添加到其中,以仅提取第一个返回的行?可以通过修改上面的查询来完成吗,或者我必须添加额外的逻辑?
长话短说,我有一个网站,其中“家长”级别的评论存储在一个单独的表中,而不是他们的回复,称为“孩子”评论。
为了生成所有最近评论的列表,我一直在做这样的事情:
SELECT
TOP 10
PC.ParentCommentText,
PC.ParentCommentID,
PC.ParentCommentTimeStamp
FROM
ParentComments AS PC
我们称其为Query1。
Query2是一样的:
SELECT
TOP 10
CC.ChildCommentText,
CC.ChildCommentID,
CC.ChildCommentTimeStamp
我想在Oracle SQL developer中编写以下sql查询(在SQL server中使用):
DECLARE @myVAR int;
SET @myVAR = 11;
WITH myCTE
AS (SELECT * FROM abc WHERE HostCount = @myVAR)
SELECT * FROM myCTE
我需要创建一个如下所示的查询
select *
from users
where name = 'A'
if and only if no result THEN
name = 'B';
我不想得到第一行名称=A和第二行名称=B的两行,我只需要其中一行
在sql中有什么方法可以做到这一点吗?
我试着用不存在或不存在的情况来达到这个目的,但却无法使它发挥作用。
谢谢
以下是数据:
data bonus1;
infile cards;
input ID Amt;
cards;
1 123
2 748
3 355
4 3223
5 124
6 11
;
run;
proc sql;
create table bonus1_ans as
select max(amt)
from bonus1
where amt not in
(select max(amt) from bonus1);
quit;
当我只想得到第二个最大的查询时,这种结构是有效的,但如果我想得到第n个最大的查询,效率就不高,因为会有太多的嵌套查询。
我尝试了一些更好的结构,但似乎SAS SQ
我正在尝试寻找最大数量的产品。结果必须只显示其中包含最多产品数量的品牌。有没有人能推荐一种更好的方式来显示结果。 以下是表的详细信息: create table Brand (
Id integer PRIMARY KEY,
Name VARCHAR(40) NOT NULL
)
create table Product (
ID integer PRIMARY KEY,
Name VARCHAR(40) NOT NULL,
Price integer NOT NULL,
BrandId integer NOT NULL,
CO
我有一个sql查询
select count(salary)
from USER_DETAILS
where salary>0 and salary<1000 union all
select count(salary)
from USER_DETAILS
where salary>1000 and salary<10000 union all
select count(salary)
from USER_DETAILS
where salary>10000 and salary<100000
是否有任何其它逻辑或更健壮的方式来执行相同的查询(最好在h
我有下面的SQL查询和查询输出,其中我得到了特定日期时间范围的每小时基础订单计数。现在,在这个输出中,我希望这个行(日期和计数)的计数值是最大的。
SELECT TO_CHAR(b.submitted_date, 'dd-mm-yyyy hh24') AS HoursBasis,
COUNT(a.order_id) AS count_id
FROM order1 a, order2 b, order_sg3 c, ship_group4 d
WHERE a.id = b.order_id
AND b.order_id != a.order_id
目前我正在使用:
SELECT t.CustomerLastName
FROM (
SELECT SUM(OrderLine.Amount * Product.Price) AS OrderLinePrice, Orders.Id, Customer.Lastname AS CustomerLastName
FROM OrderLine, Product, Orders, Customer
WHERE OrderLine.ProductId = Product.Id
AND Orders.Id = OrderLine.OrderId
AND Custom