请教的语句权重查询的SQL语句

SQL查询语句的命令_百度知道
SQL查询语句的命令
有两个表格 E(员工表) 有字段 YGNAME(员工名)
YGBM(部门)YGBH(编号)
表格 A(薪酬表) 有字段 NIAN(年份)
YUE(月份) YGYX(月薪)
YGBH(编号)
1要求查询部门为后勤部的员工名字,并显示编号和月薪
2要求查询200...
我有更好的答案
1.select&E.YGNAME&员工名,E.YGBH&编号,A.YGYX&月薪&from&E,A&where&E.YGBH=A.YGBH&and&E.YGBM='后勤部'&2.select&E.*&from&E,A&&&&where&E.YGBH=A.YGBH&&&&and&A.YGYX&between&10000&and&50000&&&&and&A.NIAN=2007&&&&and&A.YUE=7
采纳率:60%
SELECT A.YGBH,A.YGNAME,B.YGYXFROM TABLE1 A
--表ELEFT JOIN TABLE2 B
--表AON A.YGBH = B.YGBHWHERE A.YGBM = '后勤部';SELECT A.YGBH,A.YGNAME,A.YGBMFROM TABLE1 A --E表INNER JOIN TABLE2 B --A表ON A.YGBH = B.YGHBWHERE B.NIAN||B.YUE = ';
&&1.SELECT&E.YGBANE,E.YGBH,A.YGYX&FROM&E&&&&&LEFT&JOIN&A&ON&E.YGBH=A.YGBH&&&&&WHERE&E.YGBM='后勤部'&&&2.SELECT&E.YGNAME,E.YGBH,E.YGBM&FROM&E&&&&&LEFT&JOIN&A&ON&E.YGBH=A.YGBH&&&&WHERE&A.NIAN=2007&AND&A.YUE=7&AND&YGYX&BETWEEN&10000&AND&50000
SELECT E.YGNAME as &员工名字&, E.YGBH as &编号&, A.YGYX as &月薪&
FROM E, A WHERE E.YGBH=A.YGBH
AND E.YGBM='后勤部'2)
select E.* from E,A
where E.YGBH=A.YGBH
and A.YGYX between 10000 and 50000
and A.NIAN=2007
and A.YUE=7
1:SELECT E.YGNAME,E.YGBH,A.YGYX FROM E JOIN A ON E.YGBH=A.YGBH2:SELECT E.YGNAME,E.YGBH,A.YGBM FROM E JOIN A ON E.YGBH=A.YGBH WHERE A.YUE='七月' AND (A.YGYX&10000 AND A.YGYX&50000)
实例验证:
其他3条回答
为您推荐:
其他类似问题
sql查询的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。sql查询数据权重问题,请高手进来(高分求助)
[问题点数:100分]
本版专家分:33
结帖率 97.06%
CSDN今日推荐
本版专家分:314077
2012年 荣获名人称号
2011年 总版技术专家分年内排行榜第四2010年 总版技术专家分年内排行榜第九2009年 总版技术专家分年内排行榜第八
2011年10月 总版技术专家分月排行榜第一
2011年12月 总版技术专家分月排行榜第二2011年9月 总版技术专家分月排行榜第二2009年11月 总版技术专家分月排行榜第二
本版专家分:314077
2012年 荣获名人称号
2011年 总版技术专家分年内排行榜第四2010年 总版技术专家分年内排行榜第九2009年 总版技术专家分年内排行榜第八
2011年10月 总版技术专家分月排行榜第一
2011年12月 总版技术专家分月排行榜第二2011年9月 总版技术专家分月排行榜第二2009年11月 总版技术专家分月排行榜第二
本版专家分:10037
2009年10月 MS-SQL Server大版内专家分月排行榜第三
本版专家分:33
本版专家分:12442
本版专家分:3995
2011年8月 Oracle大版内专家分月排行榜第二
本版专家分:314077
2012年 荣获名人称号
2011年 总版技术专家分年内排行榜第四2010年 总版技术专家分年内排行榜第九2009年 总版技术专家分年内排行榜第八
2011年10月 总版技术专家分月排行榜第一
2011年12月 总版技术专家分月排行榜第二2011年9月 总版技术专家分月排行榜第二2009年11月 总版技术专家分月排行榜第二
本版专家分:33
本版专家分:20840
本版专家分:12442
本版专家分:3995
2011年8月 Oracle大版内专家分月排行榜第二
本版专家分:3995
2011年8月 Oracle大版内专家分月排行榜第二
本版专家分:33
本版专家分:10037
2009年10月 MS-SQL Server大版内专家分月排行榜第三
本版专家分:3995
2011年8月 Oracle大版内专家分月排行榜第二
本版专家分:3995
2011年8月 Oracle大版内专家分月排行榜第二
本版专家分:441372
年度总版至少三次排名前十即授予名人勋章
2008年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第四2009年 总版技术专家分年内排行榜第五2007年 总版技术专家分年内排行榜第六
2009年3月 总版技术专家分月排行榜第一2008年12月 总版技术专家分月排行榜第一2008年3月 总版技术专家分月排行榜第一2007年12月 总版技术专家分月排行榜第一2007年10月 总版技术专家分月排行榜第一
本版专家分:4133
本版专家分:33
本版专家分:482
匿名用户不能发表回复!|
其他相关推荐
call inseartinto
sub inseartinto()
dim db,conn,connstr
db=&../pl/Data.mdb&
set Conn = server.CreateObject(&ADODB.Connection&)
connstr=&provider=microsoft.jet.oledb.4.0;data source
dw_1.importString(csv!,is_data)is_data为空怎么就没有反映?如果第一次查询ls_data有记录,那么dw_1就显示出有结果,可ls_data为空的时候dw-1老是还显示第一次的记录呢,奇怪,怎么解决???问题是出在哪儿?
我现在有如下的数据:名字:
55.6结果要求:
xp系统可以装sql server吗?请指导以下?
使用SQL Server管理和查询数据(SQL Base)
我有一张表Create Table Stat
Int Identity(1,1) Not Null,
varchar(10),
日期 datetime
) 查询出来的数据结果为http://download1.csdn.net/down3/0
请各位大侠帮帮我这个新手,我现在第一次做一个收费管理系统中的资产管理部分,其中有一块是资产字典管理,主要功能是输入资产名称就显示如编号,价格等信息.我没有用ADO控件做用的是TEXTBOX来输入和显示.主要一个问题是怎样连接到数据库,读取数据库的信息.我用的是VB和SQL SERVER.请各位一定要帮我呀,十万火急!!!谢谢了.
一、 简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。SELECT nickname,emailFROM testtableWHERE name=张三(一) 选择列表选择列表(select_list)
lSQL难题,请高手指教
以下几个表(视图)累计每月库存表: 药品编号 ,药品名,药品类别,单价,药品规格,进货数,出货数,库存数,总价
(此表可分为12个月,即有12个视图)(视图)当月进货表:药品编号,当月进货数,单价,总价(视图)当月出货表:药品编号,当月出货数 请问如何生成一个每月药品报表的视图啊?要求:药品编号 ,药品名,药品类别,单价,药品规格,上月库存,上月库存总价,当月进货数
现在有一个表t_base_user,主键user_id为自动增长类型,login_name为用户登录名。现在数据库中login_name出现了重名现象,现在要将这些记录找出来,SQL如下:select * from t_base_user where user_id in (select user_id from t_base_user t1 where t1.user_id指定一个经纬度,给定一个范围值(单位:千米),查出在经纬度周围这个范围内的数据。&经度:113.914619&纬度:22.50128&范围:2km&longitude为数据表经度字段&latitude为数据表纬度字段&SQL在mysql下测试通过,其他数据库可能需要修改&SQL语句如下:&
select * from location where sqrt(
((113.914619-longitude)*PI()*12656*cos(((22.50128+latitude)/2)*PI()/180)/180)
((113.914619-longitude)*PI()*12656*cos (((22.50128+latitude)/2)*PI()/180)/180)
((22.50128-latitude)*PI()*)
((22.50128-latitude)*PI()*)
MySQL性能调优 & 使用更为快速的算法进行距离
最近遇到了一个问题,通过不断的尝试最终将某句原本占据近1秒的查询优化到了0.01秒,效率提高了100倍.
问题是这样的,有一张存放用户居住地点经纬度信息的MySQL数据表,表结构可以简化 为:id(int),longitude(long),latitude()long. 而业务系统中有一个功能是查找离某个用户最近的其余数个用户,通过代码分析,可以确定原先的做法基本是这样的:
//需要查询的用户的坐标
$lat=20; $lon=20;//执行查询,算出该用户与所有其他用户的距离,取出最近的10个
$sql='select * from users_location order by ACOS(SIN(('.$lat.' * 3.1415) / 180 ) *SIN((latitude * 3.1415) / 180 ) +COS(('.$lat.' * 3.1415) / 180 ) * COS((latitude * 3.1415) / 180 ) *COS(('.$lon.' * 3.1415) / 180 - (longitude * 3.1415) / 180 ) ) * 6380 asc limit 10';
而这条sql执行的速度却非常缓慢,用了近1秒的时间才返回结果,应该是因为order里的子语句用了太多的数学计算公式,导致整体的运算速度下降.
而在实际的使用中,不太可能会发生需要计算该用户与所有其他用户的距离,然后再排序的情况,当用户数量达到一个级别时,就可以在一个较小的范围里进行搜索,而非在所有用户中进行搜索.
所以对于这个例子,我增加了4个where条件,只对于经度和纬度大于或小于该用户1度(111公里)范围内的用户进行距离计算,同时对数据表中的经度和纬度两个列增加了索引来优化where语句执行时的速度.
最终的sql语句如下
$sql='select * from users_location where latitude & '.$lat.'-1 and latitude & '.$lat.'+1 and longitude & '.$lon.'-1 and longitude & '.$lon.'+1 order by ACOS(SIN(('.$lat.' * 3.1415) / 180 ) *SIN((latitude * 3.1415) / 180 ) +COS(('.$lat.' * 3.1415) / 180 ) * COS((latitude * 3.1415) / 180 ) *COS(('.$lon.'* 3.1415) / 180 - (longitude * 3.1415) / 180 ) ) * 6380 asc limit 10';
经过优化的sql大大提高了运行速度,在某些情况下甚至有100倍的提升.这种从业务角度出发,缩小sql查询范围的方法也可以适用在其他地方.
转自:http://cancait.blog.163.com/blog/static//
http://www.cnblogs.com/tyjsjl/p/3799439.html
阅读(...) 评论()在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
假设表a有一个字段b,b存的是权重,范围0-100吧,我想随机查一条记录,但是按权重给出数据,该如何写呢
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
楼上的回答全都会错意了,题主意思是根据权重设定随机几率,例如 A 的权重为10,B 的权重为 5,这个时候随机出现 A 的几率要比出现 B 的几率高。
你可以试试这个备选方案。就是先取出权重列表再去根据权重随机出来的那个权重值,根据权重值去库里再随机查。
if (!function_exists('roll')) {
function roll($data, $key = 'weight')
$tempData = [];
foreach ($data as $one) {
$weight += $one[$key];
for ($i = 0; $i & $one[$key]; $i++) {
$tempData[] = $
$use = rand(0, $weight - 1);
return $tempData[$use];
$data = [['weight' =& 1],
['weight' =& 3],
['weight' =& 5],
['weight' =& 7],
['weight' =& 9]];
$result = roll($data)['weight'];
SELECT * FROM database WHERE id &= (
(SELECT MAX(id) FROM database WHERE b = $result) - (SELECT MIN(id) FROM database WHERE b = $result)
) * RAND() + (SELECT MIN(id) FROM database WHERE b = $result) AND b = $result LIMIT 1
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
select * from a order by b desc
返回的结果集越前面的权重越高比如
--------------
| 其余字段|
--------------
|100| xxxxxxx|
--------------
|97| xxxxxxx|
--------------
|6 | xxxxxxx|
--------------
|5 | xxxxxxx|
-------------
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
如果数据不多的话select *from a order by rand() limit 1
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
只取一条数据你还排什么序…
只随机取一条就完了
楼上的就是
要取多条才需要排序sql套一层就好 select * from (select * from a order by rand() limit n)
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。百度权重:
第1页关键词数
第2页关键词数
第3页关键词数
第4页关键词数
第5页关键词数
网站子域名权重汇总
│“blog.memsql.com”相关子域名9个
一键查询网站百度PC移动权重,360PC移动权重,神马权重信息 以及网站子域名权重信息汇总。百度权重:指百度PC及移动端带来的预估流量相加汇总。360权重:指360搜索PC及移动端带来的预估流量相加汇总。权重0 无权重1 预计流量1~99权重2预计流量100~499权重3预计流量500~999权重4预计流量权重5预计流量权重6预计流量权重7预计流量权重8预计流量999权重9预计流量1000000以上
配色/在线汉字

我要回帖

更多关于 如何用SQL语句创建数据库 的文章

 

随机推荐