我应该使用UNION或其他东西从多个表中选择数据吗?

时间:2011-11-03 20:16:13

标签: php mysql select union

我的mysql数据库中有两个表: female male 。它们每个都有3列: id name age 。 我希望显示一个html表,其中包含两个表的数据。

我有这些代码:

$result = mysql_query("SELECT * FROM female ORDER BY age DESC LIMIT 20");
while($row = mysql_fetch_array($result))
{
  $age = $row['age'];
  $name = $row['name'];
}

$result01 = mysql_query("SELECT * FROM male ORDER BY age DESC LIMIT 20");
while($row01 = mysql_fetch_array($result01))
{
  $age01 = $row01['age'];
  $name01 = $row01['name'];
}

那么我应该如何混合这些表(数据)呢?我应该使用mysql UNION函数还是其他什么?这项工作的适当代码是什么?

...谢谢

2 个答案:

答案 0 :(得分:3)

你应该使用

SELECT * FROM female ORDER BY age DESC LIMIT 20
UNION
SELECT * FROM male ORDER BY age DESC LIMIT 20

SELECT * FROM
    (SELECT * FROM female
     UNION
     SELECT * FROM male)
ORDER BY age DESC LIMIT 20

最后,考虑一下:为什么要为男性和女性使用单独的表格?你可以使用一个带有色谱柱的表来进行性行为......

答案 1 :(得分:1)

嗯,最合适的解决方案是不要有单独的malefemale表,而是要有一个带有people列的gender表。这样,当你真的将所有这些行都归属于同一个表时,你不必去搞工会化表并疯狂地合并它们。毕竟,如果你真的只想选择男性或女性,那就是WHERE的用途。

但是如果这是一个遗产数据库,并且架构一成不变,我感到很痛苦,Marco's solution可以解决问题:)