获取数据库表的信息
1.查询数据库中的所有数据库名:
SELECT Name FROM Master..SysDatabases ORDER BY Name
2.查询某个数据库中所有的表名:
SELECT Name FROM SysObjects Where XType='U' ORDER BY Name
3.查询表结构信息:
1 SELECT (case when a.colorder=1 then d.name else null end) 表名,
2 a.colorder 字段序号,a.name 字段名,
3 (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识,
4 (case when (SELECT count(*) FROM sysobjects
5 WHERE (name in (SELECT name FROM sysindexes
6 WHERE (id = a.id) AND (indid in
7 (SELECT indid FROM sysindexkeys
8 WHERE (id = a.id) AND (colid in
9 (SELECT colid FROM syscolumns WHERE (id = a.id) AND (name = a.name)))))))
10 AND (xtype = 'PK'))>0 then '√' else '' end) 主键,b.name 类型,a.length 占用字节数,
11 COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度,
12 isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,(case when a.isnullable=1 then '√'else '' end) 允许空,
13 isnull(e.text,'') 默认值,isnull(g.[value], ' ') AS [说明]
14 FROM syscolumns a
15 left join systypes b on a.xtype=b.xusertype
16 inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
17 left join syscomments e on a.cdefault=e.id
18 left join sys.extended_properties g on a.id=g.major_id AND a.colid=g.minor_id
19 left join sys.extended_properties f on d.id=f.class and f.minor_id=0
20 where b.name is not null
21 --WHERE d.name='要查询的表' --如果只查询指定表,加上此条件
22 order by a.id,a.colorder
Ⅱ 如何用php获取数据库信息并显示
获取ppq数据库的所有表名的代码:
?php
$server='localhost';
$user='root';
$pass='12345';
$dbname='ppq';
$conn=mysql_connect($server,$user,$pass);
if(!$conn)
die("数据库系统连接失败!");
$result=mysql_list_tables($dbname);
if(!$result)
die("数据库连接失败!");
while($row=mysql_fetch_row($result))
{
echo
$row[0]."
";
}
mysql_free_result($result);
?
mysql_list_tables
(PHP
3,
PHP
4
,
PHP
5)
mysql_list_tables
--
列出
MySQL
数据库中的表
说明
resource
mysql_list_tables
(
string
database
[,
resource
link_identifier])
mysql_list_tables()
接受一个数据库名并返回和
mysql_query()
函数很相似的一个结果指针。用
mysql_fetch_array()或者用mysql_fetch_row()来获得一个数组,数组的第0列就是数组名,当获取不到时
mysql_fetch_array()或者用mysql_fetch_row()返回
FALSE。
Ⅲ 怎么获取access数据库中的表数据
1,打开该access数据库,数据库工具,点击关系。
2,然后便会出现各个表之间对应的关系。点击它们之间的连线,右击,便可以看到它们的关系了。
Ⅳ 从数据库中获得表中的数据
Adodc1.RecordSource = "select * from Table1" 'Adodc1是一个用来绑定数据库的控件,RecordSource是他的一个属性,用来指定所用的记录源,这里记录源是一个select的SQL查询语句 Adodc1.Refresh '刷新记录源,一般绑定后不会立即显示,需要刷新 If Adodc1.Recordset.RecordCount > 0 Then '如果记录源的行数大于零,也就是不为空的意思 Do While Adodc1.Recordset.EOF = False 'DO While 。。。。loop 是一个循环语句, Adodc1.Recordset.EOF = False 是他的循环条件,意思是记录源不到最后,则循环继续 MS1.TextMatrix(MS1.Row, 0) = Adodc1.Recordset.Fields("学号") '用记录源给MsflexGrid赋值,也算是绑定的意思吧,MS1.Row是一个行的变量,0是第一列(依此类推,1是第二列),意思是MsflexGrid的当前行第一列数据是记录集中的 学号 字段的值 MS1.TextMatrix(MS1.Row, 1) = Adodc1.Recordset.Fields("姓名") '解释同上 MS1.TextMatrix(MS1.Row, 2) = Adodc1.Recordset.Fields("性别") '解释同上 MS1.TextMatrix(MS1.Row, 3) = Adodc1.Recordset.Fields("年龄") '解释同上 MS1.TextMatrix(MS1.Row, 4) = Adodc1.Recordset.Fields("籍贯") '解释同上 MS1.TextMatrix(MS1.Row, 5) = Adodc1.Recordset.Fields("班级") '解释同上 MS1.TextMatrix(MS1.Row, 6) = Adodc1.Recordset.Fields("学校") '解释同上 MS1.TextMatrix(MS1.Row, 7) = Adodc1.Recordset.Fields("备注") '解释同上 MS1.Row = MS1.Row + 1 '所操作的表格行数自动加1,也就是下移一行 Adodc1.Recordset.MoveNext '记录集的指针下移一行 LOOP '继续循环,达到退出循环条件时就会退出,条件是前面继续循环条件的否定,也就是到达记录集最后一条 END IF 'IF语句结束
Ⅳ java 获取mysql 某个数据库中所有表及表的列的信息
mysql里面提供了很多方法来获取表结构和表列:如下方法
获得某表所有列的信息:
String sql = select * from tname;//tname为某一表名
Connection conn = ....;
Statement st = conn.createStatement();
ResultSet rs = st.rs = st.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int colcount = rsmd.getColumnCount();//取得全部列数
for(int i=0;i<colcount;i++){
String colname = rsmd.getColumnName(i);//取得全部列名
}
以上为某表字段具体查询,如果是查询表的信息,如在mysql服务器上那样的查询结果的话,可以用一下代码:
ResultSet.executeQuery("show tables")可以的到所有的表信息。
ResultSet.executeQuery("describe tname")可以得到表的字段信息。//tname为表名
Ⅵ mysql 查询怎么获取数据库下所有表的信息
show tables即为显示当前数据库中所有的表。又如:
mysql> use mysql
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
28 rows in set (0.05 sec)
这个是显示“mysql”这个数据库中的所有的表,一共有28张。
Ⅶ hibernate怎么获取数据库表字段等信息
hibernate怎么获取数据库表字段等信息
教你个方法:
List result = session.createSQLQuery(sql)
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list()
用这个方法可以把数据库查询出来的每一行封装成一个Map类型,Key为数据库字段,Value为值,
然后把这些Map放到了一个List里面,
如果你只返回一条记录:
那么
Map<String, Object> map = (Map<String, Object>) result.get(0);
即可得到你这一行记录转换层的Map,
如果有多条,迭代List即可。
希望对你有帮助
Ⅷ 如何自动读取数据库中的信息,这里应该如何写
用access自动获取excel里的数据的方法就是通过代码的方式导入。
如果是手动导入比较清楚的话,这个实现起来不难,请参考下面的介绍来实现:
首先,新建一个工程,在工程中引用如下对象ADO对象(用于连接ACCESS数据库,可用其它方式),添加一个窗体(from1),在窗体上添加如下控件:
两个文本框,用来显示EXCEL文件路径和ACCESS路径;
四个扭钮,两个用来游览,另两个是导入和退出;
两个通用对话框控件,用来打开ACCESS和EXCEL文件,一个进度条控件,用来显示导入进程。
该实例的导入是将ACCESS数据库中表的字段名单独存放在另外一个表中,导入时按表中所存字段名的顺序进行导入,不是按EXCEL表的顺序导入,这样在实际中是很实用的.
Ⅸ 如何取得数据库信息
取得视图的方法 系统存储过程 USE xxx EXEC sp_help 或者 获取指定数据库的视图: USE DBAudit SELECT sysobjects.name AS name, sysusers.name AS owner FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'V' 获取指定数据库的视图的内容: EXEC sp_helptext xxxObject 取得存储过程的方法 系统存储过程 USE xxx EXEC sp_help 或者 获取指定数据库的存储过程或者扩展存储过程: USE DBAudit SELECT sysobjects.name AS name, sysusers.name AS owner, type FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'P' OR type = 'X' 获取指定数据库的存储过程或者扩展存储过程的内容: EXEC sp_helptext xxxObject 无法获取加密的存储过程。扩展存储过程只能得到dll 程序名。 取得函数的方法 系统存储过程 USE xxx EXEC sp_help 或者 获取指定数据库的各种函数(内嵌函数等): USE DBAudit SELECT sysobjects.name AS name, sysusers.name AS owner, type FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'FN' OR type = 'IF' OR type = ‘TF’ 获取指定数据库的函数的内容: EXEC sp_helptext xxxObject 只能获取用户定义的函数内容。 取得触发器的方法 系统存储过程 USE xxx EXEC sp_helptrigger xxxTable 或者 获取指定数据库的表的触发器: SELECT sysobj1.name AS name, sysusers.name AS owner FROM sysobjects AS sysobj1 LEFT JOIN sysobjects AS sysobj2 ON sysobj1.parent_obj = sysobj2.id LEFT JOIN sysusers ON sysobj1.uid = sysusers.uid WHERE sysobj1.type = 'TR'AND sysobj2.name = 'xxxTable' 取得索引的方法 系统存储过程 USE xxx EXEC sp_helpindex xxxTable 用户 系统存储过程 USE xxx EXEC sp_helpuser 角色 系统存储过程 USE xxx EXEC sp_helprole 第二部分: 对于oracle 而言: ?ORACLE 只能连接特定数据库,不能自动扫描数据库对象。ORACLE 表必须用用户来区别,否则表可能重名。ORACLE 不能区别系统表或者是用户表,因此只能由管理员选择扫描某些特定用户的表。 取得数据库名的方法 只能由用户指定数据库,不能自动扫描到特定数据库服务器上的所有数据库。 取得表的方法 存储数据库表的系统表/视图主要有: DBA_ALL_TABLES 描述数据库中所有的对象以及相关的表。 ALL_ALL_TABLES 描述数据库中所有的用户可以访问的对象以及相关的表。 USER_ALL_TABLES 描述数据库中当前用户拥有的对象以及相关的表。 DBA_ TABLES 描述数据库中所有相关的表。 ALL_ TABLES 描述数据库中所有的用户可以访问的相关的表。 USER_ TABLES 描述数据库中当前用户拥有的相关的表。 因此,可以从ALL_TABLES 中取得隶属于指定用户的表: SELECT TABLE_NAME FROM SYS.ALL_TABLES WHERE OWNER = 'DBAUDIT'; 取得隶属于指定表空间的表: SELECT TABLE_NAME FROM SYS.ALL_TABLES WHERE TABLESPACE_NAME = 'DBAUDIT'; 也可以不指定用户名,从而取得所有的表。 SELECT TABLE_NAME FROM SYS.ALL_TABLES; 取得列的方法 存储数据库表的列属性的系统表/视图主要有: DBA_TAB_COLUMNS 描述数据库中所有的表的列属性。 ALL_TAB_COLUMNS 描述数据库中所有的用户可以访问的表的列属性。 USER_TAB_COLUMNS 描述数据库中当前用户拥有的表的列属性。 ALL_TAB_COLS 描述数据库中所有的用户可以访问的表的列属性。 因此,可以从ALL_TAB_COLUMNS 中取得隶属于指定用户的表: SELECT COLUMN_NAME FROM SYS.ALL_TAB_COLUMNS WHERE TABLE_NAME = 'TASK' AND OWNER = 'DBAUDIT'; 取得视图的方法 存储数据库视图的系统表/视图主要有: DBA_VIEWS 描述数据库中所有的视图的属性。 ALL_VIEWS 描述数据库中所有的用户可以访问的视图的属性。 USER_VIEWS 描述数据库中所有的当前用户拥有视图的属性。 因此,可以从ALL_VIEWS 中取得隶属于指定用户的视图: SELECT VIEW_NAME FROM SYS.ALL_VIEWS WHERE OWNER = 'DBAUDIT'; 取得存储过程的方法 存储系统对象的系统表/视图有: DBA_OBJECTS 描述数据库中所有的对象。 ALL_OBJECTS 描述数据库中所有的可以访问的对象。 USER_OBJECTS 描述数据库中所有的当前用户拥有的对象。 SYS_OBJECTS 描述数据库中所有的系统对象。 对象类型有: CONSUMER GROUP CONTEXT DIRECTORY FUNCTION INDEX INDEX PARTITION INDEXTYPE JAVA CLASS JAVA DATA JAVA RESOURCE JAVA SOURCE LIBRARY LOB MATERIALIZED VIEW OPERATOR PACKAGE PACKAGE BODY PROCEDURE QUEUE SEQUENCE SYNONYM TABLE TABLE PARTITION TRIGGER TYPE TYPE BODY VIEW 因此,取得存储过程可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PROCEDURE'; 取得隶属于某个用户的存储过程可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PROCEDURE' AND OWNER = ‘DBAUDIT’; 同样,取得其他的对象也可以用这个方法,包括表,视图等。 取得存储过程内容的方法 对象类型为类型、类型体、过程、函数、包、包体,JAVA 源代码的所有对象的源代码都存储在几个系统表/视图中: DBA_SOURCE 存储所有数据库对象的源代码。 ALL_SOURCE 存储所有可以访问的数据库对象的源代码。 USER_SOURCE 存储所有当前用户拥有的数据库对象的源代码。 因此,取得存储过程源代码的方法: SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = ‘XXX’ AND TYPE = ‘PROCEDURE’; 取得函数的方法 同上,取得函数可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION'; 取得隶属于某个用户的函数可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION' AND OWNER = 'DBAUDIT'; 取得函数内容可以用: SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'FUNCTION'; 取得触发器的方法 存储数据库触发器的系统表/视图主要有: DBA_TRIGGERS 描述数据库中所有的触发器的属性。 ALL_ TRIGGERS 描述数据库中所有的用户可以访问的触发器的属性。 USER_ TRIGGERS 描述数据库中所有的当前用户拥有触发器的属性。 因此,可以从ALL_TRIGGERS 中取得隶属于指定用户的触发器: SELECT TRIGGER_NAME FROM SYS.ALL_TRIGGERS WHERE OWNER = 'DBAUDIT'; 取得触发器内容的方法: SELECT TRIGGER_BODY FROM SYS.ALL_TRIGGERS WHERE TRIGGER_NAME = 'XXX'; 取得索引的方法 存储数据库索引的系统表/视图主要有: DBA_INDEXES 描述数据库中所有的索引的属性。 ALL_INDEXES 描述数据库中所有的用户可以访问的索引的属性。 USER_INDEXES 描述数据库中所有的当前用户拥有索引的属性。 因此,可以从ALL_ INDEXES 中取得隶属于指定用户的索引: SELECT INDEX_NAME,TABLE_NAME FROM SYS.ALL_INDEXES WHERE OWNER = 'DBAUDIT'; 取得索引相关的列的方法: SELECT COLUMN_NAME FROM SYS.ALL_IND_COLUMNS WHERE INDEX_NAME = 'XXX' AND TABLE_OWNER = 'DBAUDIT'; 用户 存储数据库用户的系统表/视图主要有: DBA_USERS 描述数据库中所有的用户的属性。 ALL_USERS 描述数据库中所有的用户的属性。 USER_USERS 描述数据库中当前用户的属性。 因此,可以从ALL_USERS 中取得用户: SELECT USER_ID, USERNAME FROM SYS.ALL_USERS; 角色 存储角色的表/视图有: DBA_ROLES 描述数据库中所有角色。 取得角色方法: SELECT ROLE FROM SYS.DBA_ROLES; 表空间 SELECT TABLESPACE_NAME FROM SYS.DBA_TABLESPACES; 数据文件 SELECT FILE_NAME, FILE_ID, TABLESPACE_NAME FROM SYS.DBA_DATA_FILES; 数据库连接 存储数据库连接的系统表/视图主要有: DBA_LINKS 描述数据库中所有的连接的属性。 ALL_LINKS 描述数据库中所有的用户可访问的连接的属性。 USER_LINKS 描述数据库中当前用户的连接属性。 因此,可以从DBA_DB_LINKS 中取得连接: SELECT * FROM SYS.DBA_DB_LINKS; 同义词 SELECT * FROM SYS.ALL_SYNONYMS WHERE TABLE_OWNER = 'DBAUDIT'; 程序包 取得程序包可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE'; 取得隶属于某个用户的程序包可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE' AND OWNER = 'DBAUDIT'; 取得程序包内容可以用: SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'PACKAGE'; 程序包体 取得程序包体可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY'; 取得隶属于某个用户的程序包可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY ' AND OWNER = 'DBAUDIT'; 取得程序包内容可以用: SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'PACKAGE BODY '; 第三部分: 简单点的还有。 返回所有列名 select name from syscolumns where id=object_id('表名') 查所有表名 select * from INFORMATION_SCHEMA.TABLES =================================== sp_tableoption N'MyTable', 'text in row', 'OFF' Sybase 取得数据库名的方法 系统存储过程sp_helpdb 或者 USE master SELECT d.name dbname, u.name owner FROM sysdatabases d, sysusers u WHERE d.suid = u.suid 取得表的方法 系统存储过程 USE xxx EXEC sp_help 或者 获取指定数据库的用户表: USE DBAudit SELECT sysobjects.name AS tname, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND type = 'U' 获取指定数据库的系统表: USE DBAudit SELECT sysobjects.name AS tname, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND type = 'S' 或者统一使用: USE DBAudit SELECT sysobjects.name AS tname, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND (type = 'U' OR type = 'S') 注: sysobjects 中type 字段类型解释: C = CHECK 约束 D = 默认值或 DEFAULT 约束 F = FOREIGN KEY 约束 L = 日志 FN = 标量函数 IF = 内嵌表函数 P = 存储过程 PK = PRIMARY KEY 约束(类型是 K) RF = 复制筛选存储过程 S = 系统表 TF = 表函数 TR = 触发器 U = 用户表 UQ = UNIQUE 约束(类型是 K) V = 视图 X = 扩展存储过程 取得列的方法 系统存储过程 USE xxxDatabase EXEC sp_help xxxTable 取得视图的方法 系统存储过程 USE xxx EXEC sp_help 或者 获取指定数据库的视图: USE xxx SELECT sysobjects.name AS name, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND type = 'V' 获取指定数据库的视图的内容: EXEC sp_helptext xxxObject 取得存储过程的方法 系统存储过程 USE xxx EXEC sp_help 或者 获取指定数据库的存储过程或者扩展存储过程: USE xxx SELECT sysobjects.name name, sysusers.name owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND (type = 'P' OR type = 'X') 获取指定数据库的存储过程或者扩展存储过程的内容: EXEC sp_helptext xxxObject 无法获取加密的存储过程。扩展存储过程只能得到dll 程序名。 取得函数的方法 Sybase 不支持用户定义函数。
Ⅹ 怎样用SQL语句查询一个数据库中的所有表
TABLE 语句
具体语法:TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
其实从语法上看,可以排序,也可以过滤记录集,不过比较简单,没有 SELECT 那么强大。
示例 1
简单的建一张很小的表 y1,记录数为 10 条。表 t1,插入 10 条记录
mysql-(ytt/3305)->create table t1 (r1 int,r2 int);
Query OK, 0 rows affected (0.02 sec)
mysql-(ytt/3305)->insert into t1
with recursive aa(a,b) as (
select 1,1
union all
select a+1,ceil(rand()*20) from aa where a < 10
) select * from aa;
Query OK, 10 rows affected (0.00 sec)
Records: 10 Duplicates: 0 Warnings: 0
- 简单全表扫描mysql-(ytt/3305)->select * from t1;+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (0.00 sec)
- TABLE 结果mysql-(ytt/3305)->table t1;+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (0.00 sec)
- 看下 table 的执行计划mysql-(ytt/3305)->explain table t1 order by r1 limit 2G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: t1 partitions: NULL type: ALLpossible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 10 filtered: 100.00 Extra: Using filesort1 row in set, 1 warning (0.00 sec)
- 其实可以看到 TABLE 内部被 MySQL 转换为 SELECT 了。mysql-(ytt/3305)->show warningsG*************************** 1. row *************************** Level: Note Code: 1003Message: /* select#1 */ select `ytt`.`t1`.`r1` AS `r1`,`ytt`.`t1`.`r2` AS `r2` from `ytt`.`t1` order by `ytt`.`t1`.`r1` limit 21 row in set (0.00 sec)
- 那其实从上面简单的例子可以看到 TABLE 在内部被转成了普通的 SELECT 来处理。示例 2应用于子查询里的子表。这里要注意,内表的字段数量必须和外表过滤的字段数量一致。克隆表 t1 结构mysql-(ytt/3305)->create table t2 like t1;Query OK, 0 rows affected (0.02 sec)
- 克隆表 t1 数据mysql-(ytt/3305)->insert into t2 table t1;Query OK, 10 rows affected (0.00 sec)Records: 10 Duplicates: 0 Warnings: 0
- table t1 被当做内表,表 t1 有两个字段,必须同时满足 t2 检索时过滤的字段也是两个。mysql-(ytt/3305)->select * from t2 where (r1,r2) in (table t1);+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (0.00 sec)
- 注意:这里如果过滤的字段数量和子表数量不一致,则会报错。