嗨,我正在学习MySQL
加入。从一个教程我有两张桌子。
查询
<?php
// Make a MySQL Connection
// Construct our join query
$query = "SELECT family.Position, food.Meal ".
"FROM family, food ".
"WHERE family.Position = food.Position";
$result = mysql_query($query) or die(mysql_error());
// Print out the contents of each row into a table
while($row = mysql_fetch_array($result)){
echo $row['Position']. " - ". $row['Meal'];
echo "<br />";
}
?>
,结果是
*我的问题是,这个选择逻辑是什么。
*如果你开始获得family
表位并在食物表中搜索,我认为结果应该是
Dad|steak
Dad|Tacos
Mom|Salad
但结果不同。搜索的工作原理和结果集的组织方式。请帮助我了解这是如何工作的,提前谢谢...............
答案 0 :(得分:0)
我会重写这个查询:
SELECT
family.Position, food.Meal
FROM
family
JOIN food USING (Position)
您可以对WHERE
条件使用JOIN
子句 - MySQL会以任一方式优化它,但通常使用ON
/ USING
JOIN
的语法条件是首选。你也可以在这里使用NATURAL JOIN
,但这可能不安全。
至于你的具体问题,我不知道为什么MySQL以这种或那种方式命令。我唯一可以告诉你的是,如果你没有指定ORDER BY
子句,你不应该依赖于结果的顺序。您应该将订单视为随机。看起来它是Meal
而不是Position
的排序。我不知道为什么会这样,但即使 也可能不可靠。如果订单很重要,请使用ORDER BY
。