❶ sql中的多表查询,以及JOIN的顺序重要么
给表之间设置主外键, 你查询多表的时候, 还是要 JOIN 的啊。
表之间设置主外键,会自动创建一个索引。
所以,理论上来说,你表之间设置了主外键。
这2个表之间关联查询的时候,性能要比 没有主外键的性能要好。
❷ 求多表查询,多列排序,的SQL语句
INNER JOIN 运算
组合两个表中的记录,只要在公共字段之中有相符的值。
语法
FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2
INNER JOIN 运算可分为以下几个部分:
部分 说明
table1, table2 记录被组合的表的名称。
field1, field2 被联接的字段的名称。若它们不是由数字构成的,则这些字段必须为相同的数据类型并包含同类数据,但它们无须具有相同的名称。
compopr 任何的关系比较运算子:"=," "<," ">," "<=," ">=," 或 "<>."
说明
可以在 FROM 子句中使用INNER JOIN运算。.这是最普通的联接类型。只要在这两个表的公共字段之中有相符值,内部联接将组合两个表中的记录。
可以使用 INNER JOIN 与部门表及员工表选择每一个部门中的全部员工。反之,可以使用 LEFT JOIN或 RIGHT JOIN运算创建 outer join,从而选择所有部门(即使有些并没有员工)或所有员工(即使有些尚未分配到部门)。
若试图联接包含 Memo或 OLE Object数据的字段,会导致错误。
可以联接任何两个相同类型的数值字段。例如,可以联接 AutoNumber和 Long字段,因为它们类型相似。但不能联接 Single 和 Double 类型的字段。
下列示例显示如何在类标识符字段联接类表及产品表:
SELECT CategoryName, ProctName
FROM Categories INNER JOIN Procts
ON Categories.CategoryID = Procts.CategoryID;
在上面的示例中,类标识符是已被联接的字段,但是它并不包含在查询输出中,因它并非被包含在 SELECT 语句之中。在这个示例中,若要包含联接字段,将字段名包含在 SELECT 语句中, Categories.CategoryID.
也可以使用下列语法,在一个 JOIN 语句中链接多个 ON 子句:
SELECT fields
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field1 AND
ON table1.field2 compopr table2.field2) OR
ON table1.field3 compopr table2.field3)];
也可以使用下列语法,嵌套 JOIN 语句:
SELECT fields
FROM table1 INNER JOIN
(table2 INNER JOIN [( ]table3
[INNER JOIN [( ]tablex [INNER JOIN ...)]
ON table3.field3 compopr tablex.fieldx)]
ON table2.field2 compopr table3.field3)
ON table1.field1 compopr table2.field2;
在一个 INNER JOIN 之中,可以嵌套 LEFT JOIN 或 RIGHT JOIN,但是在 LEFT JOIN 或 RIGHT JOIN 中不能嵌套 INNER JOIN。
--------------------------------------------
ORDER BY 子句
按照递增或递减顺序在指定字段中对查询的结果记录进行排序。
语法
SELECT 字段表
FROM 表
WHERE选择准则
[ORDER BY字段1 [ASC | DESC ][, 字段2 [ASC | DESC ]][, ...]]]
包含 ORDER BY 子句的 SELECT 语句具有以下几个部分:
部分 说明
fieldlist 要和任何字段名别名, SQL 合计函数s, 选择断定 (ALL, DISTINCT, DISTINCTROW或 TOP)或其他 SELECT 语句 选择一起检索的字段名称。
table 从其中获取记录的表的名称。欲知更多信息请看 FROM 子句.
selectcriteria 选择准则。如果此 语句 包含一个 WHERE 子句, Microsoft Jet数据库引擎 会在记录上应用WHERE条件,然后把值排序。
field1, field2 要排序记录的字段名。
说明
ORDER BY 是可选的。不过,如果要将数据以排序时的顺序显示出来,就必须使用 ORDER BY。
缺省排序顺序是升序 (A至 Z, 0至 9).以下两个示例都用雇员的姓对雇员姓名排序:
SELECT LastName, FirstName
FROM Employees
ORDER BY LastName;
SELECT LastName, FirstName
FROM Employees
ORDER BY LastName ASC;
为按递减顺序排序(Z 至 A,9 至0),必须将 DESC 保留字添加到要递减排序的每一字段的尾部。下例选择雇员薪金并对雇员用递减顺序排序。
SELECT LastName, Salary
FROM Employees
ORDER BY Salary DESC, LastName;
如果你在ORDER BY 子句中标明了包含 Memo或 OLE Object数据的一个字段,一个错误就产生了。Microsoft Jet 数据库引擎不对这些类型的字段排序。
ORDER BY通常是 SQL 语句中最后一项。
ORDER BY 子句可包含添加的字段。首先用 ORDER BY之后列举的第一个字段对记录排序。然后对此字段中等值的记录用第二字段列举的值进行排序,依此类推。
❸ sql多表查询并排序的问题
1. A、B 的关联条件是什么?
2. date合并成一个字段作为排序指标?
如果关联上的2条记录,date不一样,如何处理?
还是把表结构大概描述一下吧
❹ sql 多表 排序
如果,这两张表id,userid可作关联条件,可将两张表关联查询。
如:
select a.id,a.userid,a.title,a.time,b.id,b.userid,b.title,b.time from a,b
where a.id=b.id and a.userid=b.userid
order by a.time
❺ sql中的左联多表 表之间顺序问题
1是主表,2和3是子表,我用ABC和ACB的方式表示了一下
不知是否能解决你的疑惑。
❻ MYSQL数据库多表联查如何排序
select*form(
select*from表A
unionall
select*form表B
)torderbyt.评论时间desc
这样你试试
❼ SQL多表联合查询按日期排序
select B.Order,B.DataTime
from 表1 A ,表2 B
where A.PlantFlag =1
and A.CusOrder =B.AssOrder
order by B.DataTime
看看是不是这个意思
❽ SQL多表查询排序
select 学校名称,(select count(*) from course where school_id=school.school) as 课程计数
from school
order by 课程计数
❾ 请问数据库多表内连接顺序是怎样的
你好。
执行顺序和数据库有关的。
如果你的数据库是SQL Server,你的理解是正确的。
ORACLE是从后往前解析,SQL Server则是从前往后。
如果对这方面比较感兴趣,SQL Server推荐一本书
《Microsoft SQL SERVER 2008技术内幕 T-SQL查询(中文)》,其中有讲逻辑查询处理阶段详解。
(在网上应该容易找到的,不行的话加我qq(知道号))
如果是Oracle的话,可以查一下优化器相关。
❿ 数据库多表查询结果如何排序
先Union,再Order by.
select *
from t1
where 名字='王艳'
union all
select *
from t2
where 名字='王艳'
.
.
.
order by 时间