繁体   English   中英

MySQL从多个表获取结果

[英]MySQL Get results from multiple tables

我的数据库中有约20张桌子。

我想做的是获得所有分数都超过70的学生的清单

我的查询:

SELECT mysql.*, mssql.*, orecle.* FROM mysql, mssql, orecle;

+----------+------------+------------+------------+----------+------------+------------+------------+----------+-------------+-------------+-------------+
| student  | mysqltest1 | mysqltest2 | mysqltest3 | student  | mssqltest1 | mssqltest2 | mssqltest3 | student  | orecletest1 | orecletest2 | orecletest3 |
+----------+------------+------------+------------+----------+------------+------------+------------+----------+-------------+-------------+-------------+
| student1 |         60 |         70 |         80 | student1 |         80 |         60 |         70 | student1 |          80 |          60 |          50 |
| student2 |         50 |         80 |         90 | student1 |         80 |         60 |         70 | student1 |          80 |          60 |          50 |
| student1 |         60 |         70 |         80 | student2 |         90 |         70 |         50 | student1 |          80 |          60 |          50 |
| student2 |         50 |         80 |         90 | student2 |         90 |         70 |         50 | student1 |          80 |          60 |          50 |
| student1 |         60 |         70 |         80 | student1 |         80 |         60 |         70 | student2 |          90 |          70 |          80 |
| student2 |         50 |         80 |         90 | student1 |         80 |         60 |         70 | student2 |          90 |          70 |          80 |
| student1 |         60 |         70 |         80 | student2 |         90 |         70 |         50 | student2 |          90 |          70 |          80 |
| student2 |         50 |         80 |         90 | student2 |         90 |         70 |         50 | student2 |          90 |          70 |          80 |
+----------+------------+------------+------------+----------+------------+------------+------------+----------+-------------+-------------+-------------+
8 rows in set (0.00 sec)

为什么显示8行而不显示2行?

我想发生的是查询运行时仅输出值大于70的单元格。

我厌倦了几个查询,但是似乎没有任何作用,它们都给了我错误。

SELECT mysql.*, mssql.*, orecle.* FROM mysql, mssql, orecle where ALL > 70;
SELECT mysql.*, mssql.*, orecle.* FROM mysql, mssql, orecle where ALL > '70';
SELECT mysql.*, mssql.*, orecle.* FROM mysql, mssql, orecle where mysql.* OR mssql.* OR orecle.* > 70;
SELECT mysql.*, mssql.*, orecle.* FROM mysql, mssql, orecle where mysql.* OR mssql.* OR orecle.* > '70';

此查询将给我我认为更好的一行

SELECT mysql.*, mssql.*, orecle.* FROM mysql, mssql, orecle where mysql.student='student1' AND mssql.student='student1' AND orecle.student='student1';


+----------+------------+------------+------------+----------+------------+------------+------------+----------+-------------+-------------+-------------+
| student  | mysqltest1 | mysqltest2 | mysqltest3 | student  | mssqltest1 | mssqltest2 | mssqltest3 | student  | orecletest1 | orecletest2 | orecletest3 |
+----------+------------+------------+------------+----------+------------+------------+------------+----------+-------------+-------------+-------------+
| student1 |         60 |         70 |         80 | student1 |         80 |         60 |         70 | student1 |          80 |          60 |          50 |
+----------+------------+------------+------------+----------+------------+------------+------------+----------+-------------+-------------+-------------+
1 row in set (0.01 sec)

但是,约20张桌子可能会变得很复杂; 我也只想看到结果值为70或更高。

要使这种情况发生的最佳查询是什么?

尝试:

SELECT * FROM mysql INNER JOIN
mssql USING (student) INNER JOIN
orecle USING (student);

为了得到两行,而不是2 x 2 x 2 = 8行。

要隐藏分数低于70的单元格,请尝试:

SELECT IF(mysqltest1>70,mysqltest1,null) AS M1, 
IF(mysqltest2>70,mysqltest2,null) AS M2, 
IF(mysqltest3>70,mysqltest3,null) AS M3, 
IF(mssqltest1>70,mssqltest1,null) AS S1,
IF(mssqltest2>70,mssqltest2,null) AS S2,
IF(mssqltest3>70,mssqltest3,null) AS S3,
IF(orecletest1>70,orecletest1,NULL) as O1,
IF(orecletest2>70,orecletest2,NULL) as O2,
IF(orecletest3>70,orecletest3,NULL) as O3 FROM 
mysql INNER JOIN
mssql USING (student) INNER JOIN
orecle USING (student);

注意:您在Oracle中有错字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM