繁体   English   中英

根据MySQL和PHP中其他表的列中的最高值选择行

[英]Select rows based on the highest value in a column of an other table in MySQL & PHP

我是MySQL的裤子,所以我真的需要一些帮助,请:

我有一张像这样的桌子:

Pizza              Votes
------------------------
Margherita         1
Pepperoni          7
Sloppy Giuseppe    3

还有另一个表,例如:

ID    Pizza              Recipe                         Votes
-------------------------------------------------------------
1     Margherita         Jamie Oliver                   1
2     Pepperoni          Hugh Fearnley Whittingstall    7
3     Sloppy Giuseppe    Gino D'Acampo                  3
4     Margherita         Jamie Oliver                   1
5     Pepperoni          Jamie Oliver                   7
6     Sloppy Giuseppe    Jamie Oliver                   3
7     Sloppy Giuseppe    Hugh Fearnley Whittingstall    3

请注意,在第一个表中,香肠比萨拥有最多票数,所以我想从第二个表中获取行WHERE比萨列包含“辣”。

用伪代码: SELECT * FROM the second table WHERE the Pizza column = the pizza from the first table with the most votes

到目前为止,我有: 'SELECT * FROM pp_pizzas INNER JOIN pp_recipes ON pp_pizzas.pizza = pp_recipes.pizza'

我真的不理解所有这些MySQL知识,所以如果我能要求我解释一下以及给出一个指针/答案,我将不胜感激,以便下次可以学习!

非常感谢大家!

有很多方法可以做到这一点,但是对于这样一个简单的查询(为了清楚起见),我将使用子查询而不是联接。 就像是:

SELECT * FROM `pp_recipes` WHERE pp_recipes.pizza = (SELECT `pizza` FROM pp_pizzas ORDER BY votes DESC LIMIT 1);

子查询仅返回一行中的一列(意大利辣香肠),然后将其用作主查询中的条件。

您可以尝试:

SELECT * FROM pp_recipes
WHERE Pizza = 
    (SELECT Pizza FROM pp_pizzas
     ORDER BY Votes DESC LIMIT 1)

您也可以尝试:

SELECT * FROM pp_recipes
WHERE Votes = (SELECT MAX(Votes) FROM pp_recipes)

如果要捕获第二个表中的所有记录,则必须使用LEFT JOIN代替INNER JOIN。

试试这个,让我知道您是否需要:

SELECT * 
FROM 
  pp_pizzas 
LEFT JOIN 
  pp_recipes 
ON pp_pizzas.pizza = pp_recipes.pizza

暂无
暂无

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

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