一条关于mysql的SQL语句怎么写_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2331 | 回复: 0   主题: 一条关于mysql的SQL语句怎么写        下一篇 
wlcbhrss
注册用户
等级:新兵
经验:68
发帖:65
精华:0
注册:2011-8-21
状态:离线
发送短消息息给wlcbhrss 加好友    发送短消息息给wlcbhrss 发消息
发表于: IP:您无权察看 2014-11-14 16:02:24 | [全部帖] [楼主帖] 楼主

求高手帮忙写一条SQL语句(MySql数据库)
表A中只有一个id字段(非自增),该字段下的记录第一行为1,第二行为2,第三行为3…
现在,我想将这个表的后5行记录删除,应该如何写SQL?
如果我想再添加5行记录,应该如何写SQL?(假设已经存在137条数据,那么将插入138,139,140,141,142这五行数据)。

 2011-7-26


【最佳答案】
对于你的第一个问题,我写了一个例子,你可以放到数据库里看一下,是不是你想要的结果。

createtabletestTable
(
testCLint
)
go
declare@retint
set@ret=1
while(@ret<138)
begin
insertintotestTable
values(@ret)
set@ret=@ret+1
end
deletetestTablewheretestCLin(selecttop5testCLfromtestTableorderbytestCLdesc)


第二个问题,因为id非自增,所以不能用@@identity这个全局变量获取最近一次插入数据的id,
不过也正因为id不自增,你可以用selectcount(*)fromA来获取信息条数来对应最新值的id。
或者如果你无法保证count与id的对应,你可以通过在表中加入时间字段以方便获取最后插入的id值。如果硬要sql语法获取的话,我暂时还没想出怎么做。
希望能帮到你。
哦,对了,因为id是int类型可以通过selectmax(id)fromA来获取A表中最大的id值,应该也就是最新的id值了,这样就可以控制最新插入数据的id了。
 2011-7-27荐
sql语句:添加数据|sql语句:delete|sql语句:查询|sql语句:优化|sql语句:错误

mysql和MSSQL中同时得到表A的第一条和最后一条的sql语句怎么写 2011-5-5

【最佳答案】

(SELECT*FROM`table1`limit1)
union
(SELECT*FROM`table1`orderbyiddesclimit1)


 2011-5-5荐

sql语句:查询|sql语句:优化|sql语句:创建数据库|sql语句:排序|sql语句:执行

【其他答案】

MSSQL第一条就是selecttop1*from表

最后一条没法取,不过你可以按你的排序字段倒序排序,然后取第一条,比如

selecttop1*from表orderbyiddescmysql用limit

select*from表limit1

最后一条

select*from表orderbyiddesclimit1

2011-5-5
selettop1*fromaorderbyid
uionall
selecttop1*fromaorderbyiddesc
2011-5-5


最好一行:

select*fromtable
minus
select*fromtable


whererownum<(selectcount(*)fromtable)求第X行的通用SQL语句

select*fromtablewhererownum<X+1
2011-5-5


求一条mysql数据库sql语句

表1:tieba字段:tt

表2:huishou字段:group要让当huishou表中的group为2的时候,将tieba表中的tt内容改为“重要贴”,请问update怎么写?updatetiebasettt=重要贴where..??

问题补充:谢谢javainlife,不过我只要在pma执行就好,不用触发。

updatetiebasettt='重要贴'where

就是不知道条件怎么写,要条件另外表的字段。

2008-6-7


【最佳答案】

一条语句:

updatetiebasettt=‘重要贴wherehuishou.grout=2;

这样应该不行;一条语句不能达到。估计你的意思要用到一个触发器:

当group插入或修改一条数据让group=2的时候激活触发器来修改tieba的字段。createtriggerUpdate_tieba

afterinsertorupdateonhuishouforeachrow
asbegin
declaer@amountint
select@amount=groupfromhuishou
if(amount==2){


updatetiebasettt='重要贴'

}

end大体是这样的。如果单独创建一个那两个字段的视图一句更新就好写了。

什么也不弄,你看看这样行吗?updatetieba,huishousettieba.tt='重要贴'wherehuishou.group=2;不知道mysql支持这样吗,不行的话,我也没好的办法了。

 2008-6-7荐

sql语句:添加数据|sql语句:delete|sql语句:查询|sql语句:优化|sql语句:错误

【其他答案】

就这么一个字段怎么写哦?

2008-6-7


帮忙写一条mysql的sql语句

select*fromtb_take_statistics;
id|advertId|userId|userName|advertName


1|1001|111|111|测试1

2|1002|111|111|测试2

3|1001|333|333|测试1

4|1001|111|111|测试1

5|1002|222|222|测试2

6|1003|333|333|测试3

7|1001|444|444|测试1求一条sql语句,执行语句结果如下:

id|advertId|userId|userName|advertName


1|1001|111|111|测试1

2|1002|111|111|测试2

4|1001|111|111|测试1

3|1001|333|333|测试1

6|1003|333|333|测试3

5|1002|222|222|测试2

7|1001|444|444|测试1自己想了好久写不出,求高手帮下

2011-8-19


【最佳答案】

SELECTa.*fromtb_take_statisticsasaJOIN(SELECTuserName,count(userName)ascountFROMtb_take_statisticsGROUPBY`userName`)asbona.userName=b.userNameORDERBYb.countdesc,b.userNameasc


 2011-8-19荐

sql语句:创建数据库|sql语句:查询|sql语句:优化|sql语句:执行|sql语句:排序

【其他答案】

你这个数据毫无规律可找。。。。

2011-8-19


你用userId分组一下,就是。grouoby

2011-8-19


请详细解释一下比如你是说必须userid按照111,333,222,444的顺序吗如果是那为什么是这个顺序这个顺序是怎么来的

2011-8-19
select*from(selecta.*,(selectcount(*)fromtb_take_statisticsasbwhereb.userid=a.userid)cntfromtb_take_statisticsasa)orderbycntdesc,userId;


不知这个是不是您想要的结果?

2011-8-19
SELECT*,COUNT(*)FROMtb_take_statisticsGROUPBYuseridORDERBYidASC
2011-8-19


请帮忙Mysql一条SQL语句优化

SELECT*fromgk_infowhereSORTin(0,1)AND(unitid='000400010001'andidmllike'00010002%'andstate=1)or(tounitid='000400010001'andtomlidlike'00010002%'andstate=1andtostate=1)orderbypdatedesclimit5执行需要11秒,太恐怖了,unitid、idml、tounitid、tomlid都建了索引

主键是indexno

问题补充:若回答较好,补加100分!

2009-12-11


【最佳答案】

首先and和or设置条件时可以不用加上括号,所以你可以将你用的所有括号去掉,再去掉重复的条件。

SELECT*fromgk_infowhereSORTin(0,1)ANDunitid='000400010001'andidmllike'00010002%'andstate=1ortounitid='000400010001'andtomlidlike'00010002%'andtostate=1orderbypdatedesclimit5


其次,如果你不是需要取出所有的字段,可以适当筛选字段。最后,可以创建一个视图来保存这个查询,然后直接查询视图就可以了。

createviewview_nameasSELECT*fromgk_infowhereSORTin(0,1)ANDunitid='000400010001'andidmllike'00010002%'andstate=1ortounitid='000400010001'andtomlidlike'00010002%'andtostate=1orderbypdatedesclimit5;查询视图:

select*fromview_name;另外,创建的索引因为都是id所以建议都创建成聚集索引。

 2009-12-11荐

sql语句:优化|sql语句:查询|sql语句:创建表|sql语句:排序|sql语句:执行

【其他答案】

pdate索引sort这个有几个值,要的只取0,1是不是可以也加个索引改成sort<2

2009-12-11
SELECT*fromgk_infowhereSORTin(0,1)ANDstate=1AND((unitid='000400010001'andidmllike'00010002%')or(tounitid='000400010001'tounitid='000400010001'andtomlidlike'00010002%'))orderbypdatedesclimit5
2009-12-11


--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论