MySQL显示两个表中的列而不重复

时间:2015-10-27 20:30:28

标签: mysql sql

我有以下表格:

  1. 餐馆:

     Restaurant_ID | Restaurant_Name | Phone_1
    
  2. 菜单:

    Item_ID | Rest_ID | Item_Name | Item_price
    
  3. 我想要输出:

    Restaurant_ID| Item_Name | Item_price 
    

    我尝试了这个查询:

    SELECT  r.Restaurant_ID,
            m.Item_Name,
            m.Item_price 
    FROM    restaurants r, menu m
    WHERE   r.Restaurant_ID = (SELECT `Rest_ID` FROM menu WHERE Item_ID=1) LIMIT 0,1;
    

    但此查询的输出是两个表中的所有行。 实际上我并不想显示所有行,这就是为什么我使用LIMIT但我没有得到欲望输出。

3 个答案:

答案 0 :(得分:2)

试试这个:

SELECT r.Restaurant_ID, m.Item_Name, m.Item_price
FROM restaurants r
LEFT JOIN menu m ON r.Restaurant_ID=m.Rest_ID
WHERE Item_ID=1

答案 1 :(得分:0)

这将为您提供所需的结果

SELECT  r.Restaurant_ID,
        m.Item_Name,
        m.Item_price 
FROM    restaurants r
        JOIN (  SELECT Item_ID, Rest_ID, Item_Name, Item_price
                FROM Menu
                GROUP BY Item_ID, Rest_ID, Item_Name, Item_price) m
            ON r.Restaurant_ID = m.Rest_ID
WHERE   m.Item_Id = 1

答案 2 :(得分:0)

我认为您在原始查询中需要更改的是您加入表格的方式:FROM menu m LEFT JOIN restaurants r ON ...。现在你的查询并没有把这两个表联系起来。

SELECT r.Restaurant_ID,m.Item_Name,m.Item_price
FROM menu m
LEFT JOIN restaurants r ON m.Rest_ID = r.Restaurant_ID
WHERE r.Restaurant_ID=(SELECT `Rest_ID` FROM menu WHERE Item_ID=1)