我有个问题。如果我碰巧执行了一个本机查询,并且需要使用调用中的参数在其中执行If,如下所示:
case
when :var=1 then
inner join" +
primeiroInnerJoin
else " +
inner join
segundoInnerJoin
end
":var“是将在本机查询调用中出现的变量,如何检查该变量的值并根据变量的值更改查询?
我想写一个这样的sql查询,逻辑如下: when nn not null then dn like 'id=$nn$%'
when user_id = $usrid$
when field1 not null then field1= $wid; 我是为splunk search写的。 我想要比较3个3个输入,并将查询修改为非空的当前输入。
请参阅下面的以获得完整的示例。为什么Query 2返回的结果与Query 1不同?我认为Query 2有关联的子查询,所以它们应该每一行执行一次,但是它的工作方式就像子查询是与OR而不是AND连接的。
-- Query 1
SELECT id
FROM parent p
WHERE EXISTS(
SELECT 1
FROM child
WHERE child.parent_id = p.id AND child.field_1 = 1 AND child.field_2 = 1
)
-- Query 2
SELECT id
FROM parent p
WHERE
我已经创建了Mysql函数,它给出的结果是整型或空值。它适用于所有值。如果在简单查询中使用此函数,它也会按预期工作,如下所示:
select distinct(hsd.hotel_id)
from hotel_season_detail hsd
where '2019-04-26' BETWEEN hsd.season_fromdate and hsd.season_todate and hsd.stop_sale >'2019-04-26' and getHotelMarkupManagementId(hsd.id,'AFG') is
我试图找出以下两个查询之间的区别
查询1:
其中我在on子句中给出了条件'Orders.OrderID != null'
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders
ON (Customers.CustomerID=Orders.CustomerID and Orders.OrderID is not null)
查询2:
其中我在where子句中给出了条件'Orders.OrderID != null'
SELECT Customers.Custom
我有一个表,它有一个列命名标题、作者、发布者和类型。在“列类型”中,我指定项目是书籍、论文还是杂志。因此,要按I类型查询对它们进行排序
"SELECT ID, Title, Author, Publisher, Type FROM tblbooks WHERE Type = "Books""
此查询显示作为图书的所有项。现在,我想从有一本关于其类型的书的数据中搜索,但也在指定的列上搜索。例如,我想在专栏标题中找到“大灰狼”,其中的类型是Book。我试过了
SELECT * FROM tblbooks WHERE Type="Books" LIK
我有两张桌子:订单和顾客。订单有来自客户的外键:
我可以通过两种不同的方式加入他们:
First way
Select *
from [Order]
join Customer
on [Order].Customer_id = Customer.id;
第二道
Select *
from [Order],Customer
where [Order].Customer_id = Customer.id;
这两个查询返回相同的结果集,这就引出了我的相关问题:
在这两种查询中,哪一种查询更好? execution?Why,它们之间有区别吗?,当我搜索连接示例时,它们都使用第一种方式吗?
目标是为一个给定的计时器寻找空号,该定时器在左表中存在,而在右表中不存在。我有以下两个Impala查询,我运行并得到了不同的结果?
QUERY 1: select count(dbonetable.empid), COUNT(DISTINCT dbtwotable.empid) from
(select distinct dbonetable.empid
from dbonedbtable dbonetable
WHERE (dbonetable.expiration_dt >= '2009-01-01' OR dbonetable.expiration_dt IS
考虑下表
CREATE TABLE test (
"a" varchar(32),
"b" varchar(32),
"c" varchar(32),
"d" varchar(32)
);
CREATE INDEX "test_index" ON test USING btree("a", "b", "c");
我需要执行类似的查询
SELECT count(*)
FROM test
WHERE a like 'a%
var JobList = new UpdateJobDetails();
JobList.jobDetails = (from b in Result
where (b.JobStatus !=4 && b.ActionStatus != 0) || (b.JobStatus !=5 && b.ActionStatus != 0)
select b).ToList();
如果我这样做,这个查询就是将所有条件作为一个单独的实体。
所以我做的是:
List<Jobs
SELECT
A.RowId
FROM
dbo.Rows A
LEFT JOIN dbo.SpecialRows B ON A.RowId = B.RowId AND B.ExcludeRowId > 0
WHERE
A.FileId = 55
AND A.Active = 1
AND A.ExcludeRowId = 0
AND B.RowId IS NULL /* This is to perform EXCEPT like operation */
朋友们,这是我的问题,我有几个相关的问题。
Q1)假设我有另一个与此查询相
使用以下查询,我希望选择所有已超过允许持续时间(保存为秒)且不再活动的广告:
SELECT *
FROM adverts
WHERE TIME_TO_SEC(timediff(now(),adverts.stamp_created))>adverts.duration
我的问题是:如果创建广告的时间(= stamp_created,时间戳)在今年,则此查询工作正常,time_to_sec函数以秒为单位返回正确的时间差。
但是,如果广告创建的时间与当前年份不同,例如在2014年,我得到的时间差值是错误的,而查询不起作用。可能是什么原因?如何调整查询?
我在oracle中运行以下两个merge into查询,第一个正在运行,但第二个merge into语句没有运行。它返回以下响应:ORA-30926:无法在源表中获得稳定的行集。
这两个查询都使用相同的表,并且非常相似。它们之间唯一的区别是,第二个合并查询使用了三个'ON‘条件,而第一个只使用了两个'ON’条件。
我需要一个变通方法,这样我对第二个查询的意图才能实现。请帮帮忙。
查询1)
MERGE INTO loc_final_2_exp t USING (
SELECT DISTINCT upper(trim(city)) as city,
下面的查询1可以写成查询2吗?如果是的话,他们的工作就不一样了。如果没有,那么我需要查询2的LINQ版本。
查询1:
select c.Name as 'Country', s.Name as 'State', city.Name as 'City'
from CountryRegion c,CountryRegion s,CountryRegion city
where city.Id=11 and s.Id=city.CountryRegionParentId and c.Id=s.CountryRegionParentId
查询2:
我正在尝试将影响值从旧表(特别是旧表)转移到新表(esm)。这两个表都有相似的结构:
esp
+--------+------+----------------------------
|codeNorm|impact|Other columns i dont care...
+--------+------+----------------------------
esm
+--------------+------+--------------------------------------
|codeMasterNorm|impact|Other different columns i
通过阅读MySQL文档,我无法解释phpMyAdmin中这两个查询之间的区别:
SELECT * FROM f_ean GROUP BY ean HAVING type = 'media'
-->给我57059个结果
SELECT ean, type FROM f_ean GROUP BY ean HAVING type = 'media'
-->给我73201个结果
只显示不同的列,查询的结果号怎么会不同呢?
以下查询都从posts表和users表中选择数据。第一个查询使用一个联接,第二个查询没有.我的问题是你为什么要用连接?
使用联接查询:
SELECT u.*, p.* FROM users AS u
JOIN posts AS p ON p.user_id=u.user_id
WHERE u.user_id=1
查询时没有:
SELECT u.*, p.* FROM users AS u, posts AS p
WHERE p.user_id=u.user_id
AND u.user_id=1
我有一张桌子
unam fnam
john alex
alex john
我想要一个查询返回true,如果unam 'john‘== fname 'alex’或unam 'alex‘== fname 'john’
我不知道如何在一个查询中做到这一点。我的代码
$re = mysql_query("SELECT 1 FROM tab WHERE unam='john' and fnam='alex' LIMIT 1");
$ir = mysql_query("SELECT 1
我需要更新表中的一列。应该从另一个表中检索更新值。我所做的查询是语句:
update db1.t1 set location=(select countryName from db1.t1, db2.t2 where t1.num
between t2.beginNum AND t2.endNum limit 1)
我得到以下错误:
Error Code: 1093 You can't specify target table t1 for update in FROM clause.
然后,当我从FROM子句中删除表名t1时
update db1.t1 set location=(
我有一个SQL查询,如下所示:
SELECT field1, field2, field3, field4, field5
FROM tablename
WHERE field1 = condition
GROUP BY 1,2,3,4,5
HAVING COUNT(field1) > 2
我希望查询只返回结果集中有超过2行的结果,但是查询返回0。
有人能指出我做错了什么吗?我需要保留我的查询来选择它已经存在的字段,但是将结果限制在那些至少有2行的查询中。如果他们只有1,我不希望他们包括在我的结果中。
我知道这个SQL查询是错误的,或者我遗漏了什么,但是我有一个满是消息的表。我想要获取用户id是以太1或2,reply_to是0的所有消息。但是在我的SQL查询中,它显示了回复,而不是来自用户2的帖子。
下面是我的SQL
SELECT *
FROM `msg`
WHERE
`userid` LIKE '1'
OR
`user_id` LIKE '2' AND `reply_to` LIKE '0'
ORDER BY `timestamp` DESC
LIMIT 0,10;
我如何修复我的查询来完成我想要的?
第一次查询- select * from a full outer join b on a.x = b.y where b.y = 10
第二次查询- select * from a full outer join b on a.x = b.y and b.y = 10
考虑以下表扩展:
Table a Table b
======= =======
x y
----- -----
1 2
5 5
10 10
第一个查询将返回:
10 10
第二个查询将返回:
1 NULL
5 NULL
10 10
你能告诉我详细的原因
这是在工作中出现的,这看起来真的像是一个难题……
问题1:
SELECT * FROM
SYSIBM.SYSTABLES A LEFT JOIN
SYSIBM.SYSTABLESPACE B
ON A.DBNAME = B.DBNAME
AND A.TSNAME = B.NAME
AND A.TSNAME LIKE 'HIB%'
;
与查询应该做的事情相反,此查询不会根据HIB%条件进行过滤。我认为,将该标准放入JOIN中应该会产生相同的结果。
查询2按预期工作:
SELECT * FROM
(SELECT * FROM SYSIBM.SYSTABLES
WHERE TSNAM
SELECT COUNT(1)
FROM erp.cir_order
LEFT JOIN
(
SELECT increment_id
FROM magento.sales_flat_order sfo
JOIN Erp.cir_order co
ON co.order_num = sfo.increment_id
WHERE co.status LIKE '3' AND
DATE(SFO.created_at) >= '2016-02-01' AND
DATE(SFO.
所以我有了这个存储过程,我被要求通过使用ISNULL或者合并来简化它,但是我似乎无法使它工作。
CREATE PROCEDURE [GetCount]
@Session NVARCHAR(7),
@Activity BIT = true
AS
IF @Activity = 1
BEGIN
SELECT COUNT([user].[ActivityID]) AS [Count]
FROM [ActivityListing] AS [act]
INNER JOIN [ActivityListingDescriptions] AS [act
考虑以下情况:
我有大量的查询从其他查询中选择,这些查询的任务是在出勤表中添加当前、延迟和缺勤,计算百分比等。现在客户端希望能够在查询中加入许多不同的条件:只查看一周中某些天的出勤情况,只查看某个日期范围内的出勤情况,等等。
要执行每个条件所需的所有计算都是耗时的,因此,我希望只有当客户端请求执行该计算时才执行计算。但是,我不想为每一种可以使用的条件重新创建完整的查询/报告集。所以我想做这样的事情:
SELECT * FROM
IIf([a checkbox on a form that indicates whether the user wants the condition],
我有以下问题:
SELECT s.LogonId "StaffId" FROM [dbo].[SQMap] sq
INNER JOIN [dbo].[Staff] s ON s.Id = sq.StaffId
INNER JOIN [dbo].[Queue] q ON q.Id = sq.QueueId
WHERE sq.QueueId = @queueId AND q.IsAuto = 1
我被要求更改查询以向where子句添加更多条件。
WHERE sq.QueueId = @queueId
AND q.Id = @queueId
AND q.IsAutoAssigne
我运行Server 2008,并试图执行以下SQL查询:
查询1:
SELECT *
FROM tableA
LEFT OUTER JOIN tableB AS tabX ON tabX.some_id = tableA.some_id
LEFT OUTER JOIN tableB AS tabY ON tabY.some_id = tableA.some_id
WHERE tabX.some_attribute = 'X'
AND tabY.some_attribute = 'Y'
我已经知道,在WHERE语句之后的条件确实会使LEFT OUTER JOIN陷