-2

以下のようなテーブルがあります。

果物を保管するための 1 つのテーブルと、その種類のための 1 つのテーブル。

create table fruits(fruit_id int, fruit_name VARCHAR(255));  
create table type(fruit_id int, status VARCHAR(255));

INSERT INTO fruits(fruit_id, fruit_name) 
            values(101, 'Apple'),
                  (102, 'Mango'),
                  (103, 'Lemon'),
                  (104, 'Grape'),
                  (105, 'Orange');

INSERT INTO type(fruit_id, status) 
          values(101, 'Edible');
                (101, 'Sweet'),
                (102, 'Edible'),
                (103, 'Edible'),
                (103, 'Salty'),
                (103, 'Sour'),
                (104, 'Sour');

今、私は以下のような出力が欲しい

  Fruit_id    FruitName
    101       Apple
    102       Mango
    103       Lemon
    104       Grape 

使用INNER JOINしましたが、リンゴ、レモン、ブドウの行が繰り返されます

SELECT fruits.* 
FROM fruits INNER JOIN type 
ON type.fruit_id = fruits.fruit_id
4

5 に答える 5

3

DISTINCT次のような重複行を無視するために使用できます。

SELECT DISTINCT F.*
FROM fruits f
INNER JOIN type t ON F.Fruit_id = t.Fruit_id;

このSQLFiddleを参照してください

于 2012-09-27T06:59:07.327 に答える
2
select f.fruit_id,f.FruitName from 
fruits where fruit_id in(select distinct fruit_id from type)
于 2012-09-27T06:53:18.107 に答える
2

あなたが言うようにSQLを書いてください:-)

「タイプが存在するすべての果物を表示」:

select *
from fruits
where exists (
    select *
    from types 
    where types.fruit_id = fruits.fruit_id
)
于 2012-09-27T06:56:52.663 に答える
1
SELECT f.fruit_id ,f.fruit_name 
FROM fruits f 
INNER JOIN type t ON f.fruit_id=t.fruit_id 
GROUP BY f.fruit_id,f.fruit_name

また

SELECT DISTINCT f.fruit_id ,f.fruit_name 
FROM fruits f 
INNER JOIN type t ON f.fruit_id=t.fruit_id 
于 2012-09-27T06:59:45.420 に答える
1

内部結合を実行する瞬間にデータ間のペアが得られるため、繰り返し結果が得られます。したがって、 afruitが複数回表示されるのは正常です。

あなたが持っているものについては、問題を解決するためDISTINCT(fruits.*)にステートメントで使用できる可能性があります。SELECT

お役に立てれば。

于 2012-09-27T07:00:10.587 に答える