这个问题可以是针对SQL server的。当我编写查询时,例如:
SELECT * FROM IndustryData WHERE Date='20131231'
AND ReportTypeID = CASE WHEN (fnQuarterDate('20131231')='20131231') THEN 1
WHEN (fnQuarterDate('20131231')!='20131231') THEN 4
我知道在不知道模型的情况下很难回答这个问题,但是我有下一个很重的查询,在我的MySQL数据库中需要大约10秒才能完成。我想它可以优化,但我没有那么熟练。
SELECT DISTINCT
b . *
FROM
boats b,
states s,
boat_people bp,
countries c,
provinces pr,
cities ct1,
cities ct2,
ports p,
addresses a,
translations t,
element_types et
WHERE
在下面的查询中,我使用x和y作为二维平面中对象的坐标,并试图将结果限制在距原点80个单位半径内的对象。
SELECT *,POW(x - 0,2) + POW(y - 0,2) AS distanceSquared
FROM objects
WHERE distanceSquared < 6400
由于某些原因,这里的查询不起作用,mysql显示为unknown column distanceSquared in where clause。但是,当我用HAVING替换WHERE时,它工作得非常好。为什么?据我所知,HAVING只适用于在group by之后使用聚合函数的列。
我一直在为MySQL的一些东西而挣扎。我的问题是:
我有一个查询返回日期列表,如下所示:
SELECT MIN(act_date) AS d FROM acts WHERE act_type_id = 'PA' GROUP BY contact_id;
现在,我希望将此列表中的值随机分配到另一个查询的每一行,以便日期的分布保持不变。然后,我的高级查询将根据该日期计算事物。下面是更高级别的查询:
SELECT
a1.contact_id,
DATEDIFF(d, MAX(a1.act_date)) / 365 AS recency,
COUNT(a1.a
我正尝试在where子句中执行select操作。
基本上,我有许多用户,并尝试查看哪些是活跃的。活动表示他们记录了过去30天内的活动。但是,如果我将user表与activity表连接起来,则会得到重复的用户if (因为每个用户可能记录了多个操作)。
因此,我正在考虑将select放在where中,以检查每个用户是否至少有一个操作。
SELECT u FROM `users` u
where (
select count(*) FROM `user_activity` ua
where ua.user_id = u.user_id and ua.last_login between "2
在SELECT语句中,我对当前行执行计算,并将其存储在我提供别名的列中。MySQL 5.5.4不允许引用描述的列别名。
是否有实现理想代码的方法,如下所示?我想避免一遍又一遍地重复计算。我认为,将计算的初始结果存储到变量(每一行都是唯一的)并引用该变量将是最有意义的。
工作的代码:
SELECT
DATEDIFF(CURDATE(), example_table.date_start) AS daysElapsed
FROM
example_table
WHERE
DATEDIFF(CURDATE(), example_table.date_start) > 30
AND
我试图使用子选择列出表的内容,并只选择与我的WHERE子句匹配的内容:
SELECT DISTINCT `torrentItem` as ti,
(SELECT COUNT(*) FROM votes WHERE `torrentItem` = ti AND `voteType` = 0) AS `badVotes`,
(SELECT COUNT(*) FROM votes WHERE `torrentItem` = ti AND `voteType` = 1) AS `goodVotes`,
(SELECT TIMESTAMPDIFF(WEEK,(SELECT MAX(`date`) FR
当我解决这个问题时,编写一个SQL查询来从Employee表中获得第n个最高工资。 我在下面看到了一个解决方案: CREATE FUNCTION getNthHighestSalary(N INT)
RETURNS INT
BEGIN
RETURN (
# Write your MySQL query statement below.
SELECT e1.Salary
FROM (SELECT DISTINCT Salary FROM Employee) e1
WHERE (SELECT
我有以下查询:
SELECT
*,
(SELECT locked FROM forum_topics t WHERE t.id = topicid) as topiclocked,
forum_subtopics.locked as stlocked
FROM forum_subtopics
WHERE topicid = 1;
我想使用字段topiclocked和stlocked来创建名为locked的第三个自定义颜色。我尝试了以下方法,但是MySQL告诉我topiclocked不存在:
SELECT
*,
(SELECT locked FROM fo
我试图在Hibernate (通过JPA)中运行这个查询,但它会引发
由: org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:(靠近第1行,第32列)引起的: java.lang.IllegalArgumentException:
有什么办法让这件事变得更好吗?我不想使用OR子句,因为在使用OR子句时查询要慢得多。
SELECT SUM(s) as sum FROM (
SELECT count (ID) AS s
FROM TABLE1 rr
WHERE rr.status = 0
AND (rr.risk =
我在我的表上创建了索引,然后我使用两种不同的方法触发相同的查询:我在MySql上运行这些查询,但总是得到不同的执行时间,有时第一个更快,有时second..Thats。为什么我想要专家对this.Queries的意见是第一个是
select t1.field
from table1 as t1
where t1.field in (
select t2.field
from table2 as t2
where t2.field in (
select t3.field from table3 as t3
我有一个mysql视图,它在FROM子句中有子查询。此视图可更新。我试着更新单张表,它运行得很好。但我无法插入到那张桌子上。上面写着:
错误代码: 1471。插入的目标表action_view不可插入。
我的视野:
CREATE OR REPLACE
VIEW `action_view` AS
SELECT
`ca`.`id` AS `id`,
`cah`.`title` AS `title`,
`ca`.`idCareActionHead` AS `idCareActionHead`,
`ca`.`id
我最近开始将我的应用程序从一个主机移动到另一个主机。从我家里的电脑,到云中的虚拟机。在新节点上测试性能时,我注意到性能严重下降。使用相同版本的mysql比较具有相同数据的相同查询的结果。
在我家里的电脑上:
mysql> SELECT id FROM events WHERE id in (SELECT distinct event AS id FROM results WHERE status='Inactive') AND (DATEDIFF(NOW(), startdate) < 30) AND (DATEDIFF(NOW(), startdate) >
每次运行php脚本时,我都希望通过id删除旧条目。但是MySQL抛出了这个错误:
#1111 - Invalid use of group function
这是一个查询:
DELETE FROM am_shoutbox WHERE MAX(msg_id)-160 > msg_id
这里有什么问题?我尝试并解决了它,首先选择最高的id到php,然后用第二个查询删除,但为了更好的性能,我想这样做,如果可能的话。
我希望有人能找出上面的问题出了什么问题。
我想知道为什么像select * as t这样的语句出现在MySQL子查询中,如下所示。
下面的代码根据created_time列删除表中最旧的3行。
为什么这是对的?
DELETE FROM mytable WHERE id = ANY
( SELECT * FROM ( SELECT id FROM mytable ORDER BY created_time ASC LIMIT 3')as t)
而不是
DELETE FROM mytable WHERE id = ANY
(SELECT id FROM mytable ORDER BY created_time ASC LIM
我有一个Laravel查询,当我们的数据库使用我们的MySQL DB时,它可以工作,但当我切换到新的PostgreSQL DB时,它停止工作。
我使用Laravel的group by函数,如下所示:
$this->crud->groupBy('leads.id')
翻译成mysql的整个查询如下:
select count(*) as aggregate
from (select leads.* from leads
where leads.club_id in ('TR71') and
leads.deleted_at is null GRO
我试图在MySQL中执行以下操作:
SELECT DISTINCT field
FROM table
WHERE COUNT(field) > 10
失败: 1111 -无效使用组函数(据我所知,您不能在where子句中使用组函数,如COUNT?)
选择(不同的)至少存在于N行中的所有字段的正确方法是什么?这是我必须在外部做的事情吗,比如说,PHP?
谢谢!
我有以下疑问:
SELECT seq, node, edge, cost as cost, agg_cost, geom, sT_AsGeoJson(geom), replace(
(REPLACE(sT_AsGeoJson(geom),
( select ST_AsGeoJson(geom1) from sample(20.983455,52.231909,20.973400,52.169647) a where seq1 in ( select min(seq1) from sample(20.983455,52.231909,20.973400,52.169647 )
我正在mysql中尝试使用子查询,并遇到了以下语句,在这些语句中我们可以在不同的地方使用子查询。
select Salary from Employee where (select max(Salary) from Employee) < 400;
select Salary from Employee where Salary < (select max(Salary) from Employee);
select Salary from (select * from Employee) as seq1 where Salary < 400;
现在,我感到困惑的是,在哪里我
我创建了一个函数changeIp()来禁用一条记录并返回一条新记录。如你所见,我使用的是3SQL查询。
有没有更好的方法来减少SQL查询的数量?
function changeIp() {
// Find 1 record which is not disabled
$SQL = "SELECT * FROM ip WHERE disable = 0 order by id limit 1";
$qIp = mysql_query($SQL) or die(mysql_error());
$qrow = mysql_fetch_assoc($q
我可以创建一个基于某些标准检索记录的视图,但是该视图只支持检索记录,还是支持删除和更新表中的记录。
create view onlinetestview as
select * from onlinetest where experience = '1-2 Years'
我使用了上面的视图--它工作得很好--但是当我试图创建一个更新表记录的视图时,它给了我一个错误:
create view onlinetestview2 as
update onlinetest set experience='1-2Years' where experienc
我有Mysql(mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1),我编写了这样一个查询:
SELECT
(SELECT count(*)
FROM items
WHERE items.shop_id = shops.id),
(SELECT sum(click)
FROM items
WHERE items.shop_id = shops.id),
(SELECT sum(view)
FROM items
WHERE items.shop_
我的表是emp_id(主键)、名称、性别(M或F)列的employee。我只想将我的第一行性别从M更新到F。我使用了以下代码:
UPDATE employee
SET sex = 'F'
WHERE emp_id =(SELECT emp_id FROM employee WHERE sex = 'M' ORDER BY emp_id LIMIT 1);
我收到的错误如下:
在Mysql的Popsql UI中,“您不能为update子句指定目标表'employee‘”。
问题摘要
使用MySql 5.6,我注意到组合Select查询(例如select x.a from X x where x.b in (select y.b from Y y where y.c = 'something'))比使用第二个查询的in子句中的第一个查询的结果要慢得多。而且,我尝试使用Join语句而不是嵌套查询(受此站点上其他帖子的影响)并没有产生任何性能改进。
我知道这是MySql的一个常见问题,我在这里读过很多关于这个问题的帖子,并且尝试了一些解决方案,这些解决方案显然适用于其他海报,而不是针对我。
此查询:
select ADSH_ from SECSub w
我有以下COALESCE用法,如预期的那样工作:
[...]coalesce
(
status_avail_direct.status,
(
SELECT status
FROM status_avail_direct
WHERE (status_avail_direct.meter_id = oms_rec.meter) AND
(status_avail_direct.clt_rec_at <= clt_rec.captured_at)
ORD
我有以下MySQL查询,运行非常好:
SELECT a.id, a.event_name, c.name, a.reg_limit-e.places_occupied AS places_available, a.start_date
FROM nbs_events_detail AS a, nbs_events_venue_rel AS b, nbs_events_venue AS c,
(SELECT e.id, COUNT(d.event_id) AS places_occupied FROM nbs_events_detail AS e LEFT JOIN nbs_events_att
这可能是两个问题。使用mysql/mariadb。我正在尝试查找某个字段的重复项。
SELECT field1, COUNT(*) c FROM table1 WHERE c > 1 GROUP BY field1;
Error Code: 1054. Unknown column 'c' in 'where clause'
如果我将别名放在引号中,它可以工作,但找不到重复项:
SELECT field1, COUNT(*) 'c' FROM table1 WHERE 'c' > 1 GROUP BY field1;
我是MySQL的新手,对它的语法仍然有问题。我有这样的疑问:
SELECT a, b, c, d, e
FROM table1
WHERE status = 'skipped'
AND batchid IN (SELECT batchid
FROM (SELECT distinct batchid, date_format(uploaddate, '%Y-%m-%d')
FROM table1
WHERE uploaddate >
我正在使用sqlite在离子2,以获取数据从聊天台,但它一直给我的错误在联合。以下是我的疑问:
SELECT a.id, a.timeDate, a.message, fromUser, toUser FROM ((SELECT id, message, fromUser, toUser, toUser AS uid, timeDate FROM chat WHERE fromUser = ?) UNION (SELECT id, message, fromUser, toUser, fromUser AS uid, timeDate FROM chat WHERE toUser = ? ))
尝试使用"SELECT *“而不是"DELETE FROM”进行查询,它运行得很好。
DELETE FROM `80dage_garmin_track` t1 WHERE EXISTS (
SELECT 1
FROM `80dage_garmin_track` t2
WHERE t1.Length = t2.Length
AND t1.Time = t2.Time
AND t1.idgarmin_track > t2.idgarmin_track
)
MySQL Error: .#1064 -您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以获得
当我试图运行一个存储过程时,我会得到这个错误。
mysql> call get_nearby;
错误1054 (42S22):'where子句‘中未知列'longRadius’
下面是创建存储过程的sql:
CREATE PROCEDURE get_nearby() BEGIN SET @lat = 10; set @long = 12;
SELECT id,
@long - radius / abs(cos(radians(@lat)) * 69) as longRadius,
(radius/69) as latRadius
FROM area
W
我希望在where子句中获取和使用从子选择返回的MySQL中的值。这个是可能的吗?似乎没有必要写出两次子查询-然而,如果我需要的话,MySQL会聪明到只运行一次吗?
我已经尝试了以下不起作用的方法:
SELECT
(SELECT 1 FROM table WHERE somereallycomplicatedclause = 'something')
AS subselectresult
FROM content WHERE subselectresult = 1
这将生成以下错误:
#1054 - Unknown column 'subselect