我有一个表,它有三个字段:"Id,Name,Sequence“。
在“序列”列中有以下条目: 1、2、3、4、2a、5、2b、2c、3、4a (行明智)。
现在我想要一个mysql查询,它可以对这些值进行排序,例如:
1、2、2a、2b、2c、3、4、4a、5。
我尝试过以下查询
SELECT * FROM table_name ORDER BY CAST(sequence AS UNSIGNED) ASC。
但这不管用。
最近,我将MySQL版本从5.5.8改为5.6.23,并遇到了一些查询性能问题。在旧的MySQL中,查询是在合理的时间内执行的,但是在新的server+mysql服务器中,则会变得没有响应。Linux命令
linux~ top
执行查询时显示mysql >100% wcpu。如果单独执行每个子查询,结果将在几秒钟内获取。此时,mysql和apache需要重新启动才能继续工作。
因此,我的问题是优化下一个查询:
SELECT concat_ws('##', pos.name,
( SELECT COUNT(*) FROM nalogi n
WHERE n.oth
假设我有一个非常简单的桌子,像这样:
CREATE TABLE `t1` (
`key_part1` INT UNSIGNED NOT NULL,
`key_part2` INT UNSIGNED NOT NULL,
`value` TEXT NOT NULL,
PRIMARY KEY (`key_part1`, `key_part2`)
) ENGINE=InnoDB
使用此表,我希望发出如下查询:
SELECT *
FROM `t1`
ORDER BY `key_part1` ASC, `key_part2` DESC
LIMIT 1
我曾希望这个查询中的ORDER BY能
我正在做一个项目,在那里我会吸引用户和他们最新的博客文章。我们拥有的软件存储一个类似于drupal的版本ID。不过,我在查询中遇到了许多错误。我已经习惯了编写MySQL查询,我认为这是可行的,但是Postegres给了我一些问题。
Users Table:
id
name
...
Posts Table:
id
authorID
versoinID
title
content
.....
SELECT u.id, u.name, p.id, p.versionID p.title FROM Users u LEFT OUTER JOIN Posts p on u.id = p.author
mysql:
SELECT *
FROM (select * from songs order by artist asc) as songs2
WHERE artist LIKE 'a%' GROUP BY artist`
mssql:
SELECT *
FROM (select top 1000 * from songs order by artist asc) as songs2
WHERE artist LIKE 'a%' GROUP BY artist
这在mysql中有效,但在mssql中我得到了一个错误:
列‘GROUP s2.id’在
例如:
我将使用JQuery ui autocomplet plugin.The suggestions data MySQL databse,我的sql查询是:
SELECT `keywords`,`record_count` FROM `suggestion_words`WHERE `keywords` LIKE '%'.$suggestions .'%' ORDER BY `search_count` LIMIT 0,10
正如每个人所说,LIKE更多的是slower.So,我想知道,如果我每次查询只返回10条记录,是否应该在数百万条记录和数千条记录中
我想从名为id的列中的MySQL数据库中选择最后50行,该列是主键。目标是在ASC order中按id对行进行排序,这就是此查询不起作用的原因
SELECT
*
FROM
`table`
ORDER BY id DESC
LIMIT 50;
同样值得注意的是,行可以被操作(删除),这也是以下查询不起作用的原因
SELECT
*
FROM
`table`
WHERE
id > ((SELECT
MAX(id)
FROM
chat) - 50)
ORDER BY id ASC;
o
我使用这个查询显示来自MySQL的结果:
SELECT * FROM `table`
ORDER BY id ASC
但我只想展示最后100行。我怎么能做到呢?
我试过这个:
SELECT * FROM `table`
ORDER BY id ASC LIMIT 100
但它显示了前100行,我需要最后100行.
你能帮我做这个吗?
SELECT *
FROM `experience`
WHERE `reqexp` <> '4793'
ORDER BY 'lvl' DESC
LIMIT 1
这是我想要做的。我正在为一个客户端制作一个在线游戏,需要能够使用一个随机值的mysql查询,并找到与该数量的经验相关联的水平。在这种情况下,我需要找到数据库中已经存在的低于4793的下一个值,这样我就可以确定玩家的适当级别。有什么想法吗?
我在一些博客和一些与优化相关的文章中读到了如何优化查询。我读到,我需要使用索引,并确保使用良好的关系数据库模式正确设置所有的主键和外键。
现在我有了一个需要优化的查询,我在EXPLAIN上得到了这个
Using where; Using temporary; Using filesort
我使用的是MySQL 5.5
我知道我正在使用WHERE,但不是使用临时表或文件排序?这是什么意思?
日安,朋友们。我在一台32b机器上运行Fedora 13。
我有一个包含15亿个ip地址的巨大表(当我有资源时,这些地址将被拆分,不用担心;)。当我运行此查询时:
SELECT ip FROM ips ORDER BY RAND() LIMIT 500000;
有时表崩溃(我收到错误"MySQL表被标记为已崩溃,应该修复“),有时不会。我的问题是:是什么原因导致MyISAM或InnoDB表崩溃?记忆有影响吗?因为我的系统监视器显示它只使用了大约30%。
下面是my.cnf (默认,从meta-package安装):
[mysqld]
datadir=/var/lib/mysql
soc
我试图得到10个最好的匹配全文本搜索使用全文评分。
下面的查询对我的10M行MyISAM表非常有效:
SELECT
index,
MATCH(villes) AGAINST('montreuil') as score
FROM
(
SELECT index, villes
FROM table
WHERE MATCH(villes) AGAINST('montreuil' IN BOOLEAN MODE)
) t
但是,当我试图检索以排序分数时出现错误时:
SELECT
我有一个嵌套的SQL查询:
SELECT *
FROM
(
SELECT *
FROM asset_status
ORDER BY session_id DESC
) tmp
GROUP BY asset_id, workflow_element_id
我想从这个查询创建一个视图,但是MySQL似乎不允许在视图中使用子查询。如何将其转换为join?
在MYSQL中有没有其他方法来生成随机排序的sequence_no?我有一张桌子:验证码
SET @a:= 1;
SELECT @a:=@a+1 as sequence_no,captcha_id, captcha_name
FROM captcha,(SELECT @a:= 0) AS a
ORDER BY RAND()
我的预期输出:
sequence_no | captcha_id | captcha_name
----------------------------------------
01 | 11 | name1
02 |
我在MySQL 5.5 (或以前的版本)中使用以下查询多年,没有任何问题:
SELECT t2.Code from (select Country.Code from Country order by Country.Code desc ) AS t2;
结果的顺序总是在我需要的时候递减。
上周,我刚刚迁移到一个新的MySQL版本(实际上,我迁移到了MariaDB 10.0.14),现在使用相同数据库的相同查询不再降序排序。它是按升序排序的(或者按自然顺序排序,实际上并不确定)。
那么,谁能告诉我这是一个bug,还是最近版本的MySQL/MariaDB的行为发生了变化?
我在MySQL中有一个查询:
SELECT * FROM (
SELECT COUNT(*) AS count, t.name AS name
FROM tag t
INNER JOIN video_has_tag v USING (idTag)
GROUP BY v.idTag
ORDER BY count DESC
LIMIT 10
) as tags ORDER BY name
我想用理论来写这篇文章。我怎么能做到这一点?我写道:
Doctrine_Query::create()
->select('COUNT
在我的查询中,我使用一个子查询,该子查询获得给定产品的最后一个最高报价日期。
下面是我的子查询:
LEFT JOIN (SELECT product_id, MAX(offer_date) AS sec_last_date
FROM t_offers AS s1
WHERE offer_date < (SELECT MAX(offer_date)
FROM t_offers
WHERE product_id=s1.
如果我对下面每个字母数字排序项(ids)都有一行:
aa ab ac ba cc cf ff gh h4 ia
我想选择3项,直接在之前选择cc,即ab、ac和ba (按顺序排列)。我的MySQL查询不是直接在cc之前选择项目,而是从列表的开头选择。
SELECT * FROM things WHERE id < 'cc' ORDER BY id LIMIT 3.
同样,该查询不工作,因为它没有在之前直接检索项。这里的正确方法是什么?
mysql子查询中的结果顺序是否影响实际查询的顺序?我试过了,但没有取得真正的结果,因为有时看起来是这样,有时却没有。
例:
SELECT name FROM people WHERE pid IN (SELECT mid FROM member ORDER BY mdate)
在这种情况下,"order“-clause会影响结果的顺序吗?
谢谢。
我在下面的链接中看到可以忽略ORDER子查询的链接。
引用自MariaDB知识库
查询,例如
SELECT field1, field2 FROM
(SELECT field1, field2 FROM table1 ORDER BY field2 ) alias
返回不一定由field2排序的结果集。
因此,给定以下查询:
SELECT CASE
WHEN @prev = x.city_id
THEN @a
WHEN @prev := x.city_id
THEN @a := @a + 1
假设我有一个包含两列的MySQL表,并且我执行了一个查询(再简单不过了
select * from test order by prio asc, datum asc
这就给出了我所期望的结果:
datum | prio
2017-07-02 | 1
2017-07-09 | 2
2017-06-11 | 3
2017-06-01 | 4
2017-06-18 | 5
2017-06-25 | 6
现在,我想限制我的结果只有最后3行,避免做一些有偏移量的事情,因为我必须计算行数,所以我知道这是有效的:
select * from test order by prio asc, da
我有两个查询要附加到MySQL中。我发现UNION可以帮助我做到这一点,但它并不完美,因为它没有保留每个附加查询的顺序。简而言之,我想这样做:
(SELECT name,city FROM people WHERE xxx ORDER BY yyy)
UNION
(SELECT name,city FROM people WHERE zzz ORDER BY www)
但是,当存在UNION时,SQL不会在ORDER语句上执行
一种解决方案是向每个子查询添加一个假字段,并首先按该字段排序:
(SELECT name,city,'0' as bogus FROM people
下面是我的mysql查询
SELECT mail FROM table2 WHERE wid IN
(SELECT DISTINCT Id FROM table1
WHERE time_stamp>=DATE_SUB(NOW(),INTERVAL 10 MINUTE) AND status<>200
ORDER BY time_stamp ASC)
LIMIT 2");
这将获取两个始终工作的fine.but在升序中未排序的条目。查询总是选择从第一行开始的行,而不执行order (我知道限制只从第一行开始)。在按升序对ID进行排序之后,我需要从表1中获取time_
我有一个表"Product“,如下所示:
store_id product
----------------------------------
1 A
1 B
1 C
1 D
1 E
2 AA
2 BB
2 CC
2 DD
mysql查询从每个商店中随机选择3种产品,并将产品放在每个商店各自的列中,这样我就可以得到如下结果集:
store_id product_1 product_2
在中,我发现了一个奇怪的语法:
(SELECT * FROM `articles`
WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY))
ORDER BY `views` DESC
LIMIT 20
) ORDER by `views` ASC
不过,mysql很好地执行了它。
为什么我认为它应该失败:
子查询没有别名
整个查询缺少SELECT子句
我发现它是出乎意料的运行,没有一个解释,为什么它工作。
它不符合在上定义的语法
那么,为什么它是有效的?有推荐信吗?