如何将值与列名相同的多个表中的列值进行比较?

时间:2018-01-25 07:21:53

标签: php mysql mysqli

我有五个不同的表,在数据库中具有相同的列名。我想检查字符串值是否与五个表中任何一个的列值匹配。

例如:我的数据库包含第8个标准的考试成绩。五个不同的表包含每个学生的标记。第一个表包含第8节A部分的标记。第二个表包含第8节B部分的标记。第三个表包含第8节C部分的标记。(依此类推)

所有表都具有相同的列名。 (卷号,数学标记,历史标记,地理标记和社会学习标记)

我想要获取数学上已经获得超过90分的人。我想知道mysqli的单个查询。

提前致谢。

2 个答案:

答案 0 :(得分:1)

假设同一个学生没有出现多个表格,您应该能够将这五个表格结合起来(但请参阅下面有关您设计的一些评论):

SELECT *
FROM table1
WHERE math_marks > 90
UNION ALL
SELECT *
FROM table2
WHERE math_marks > 90
UNION ALL
SELECT *
FROM table3
WHERE math_marks > 90
UNION ALL
SELECT *
FROM table4
WHERE math_marks > 90
UNION ALL
SELECT *
FROM table5
WHERE math_marks > 90;

这里更好的设计是拥有一个包含所有学生分数的表格。您可以拥有学生ID,部分和班级的列。这将使查询和跟踪事情更容易IMO。

答案 1 :(得分:0)

相同的回复,但您可以添加额外的字段以了解学生的哪个部分。

SELECT a.no as student, a.math, "A" as Section FROM a WHERE a.math > 90
UNION
SELECT b.no as student, b.math, "B" as Section FROM b WHERE b.math > 90
UNION
SELECT c.no as student, c.math, "C" as Section FROM c WHERE c.math > 90
UNION
SELECT d.no as student, d.math, "D" as Section FROM d WHERE d.math > 90
UNION
SELECT e.no as student, e.math, "E" as Section FROM e WHERE e.math > 90

The SQL Fiddle