我有一张如下表格。
一个用于存储水果的表和一个用于存储水果的表。
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
答案 0 :(得分:3)
您可以使用DISTINCT
忽略重复的行,如下所示:
SELECT DISTINCT F.*
FROM fruits f
INNER JOIN type t ON F.Fruit_id = t.Fruit_id;
答案 1 :(得分:2)
select f.fruit_id,f.FruitName from
fruits where fruit_id in(select distinct fruit_id from type)
答案 2 :(得分:2)
写你喜欢的sql: - )
“告诉我所有类型存在的水果”:
select *
from fruits
where exists (
select *
from types
where types.fruit_id = fruits.fruit_id
)
答案 3 :(得分: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
答案 4 :(得分:1)
您正在获得重复的结果,因为目前要进行内部联接,它会为您提供数据之间的对,因此fruit
出现不止一次是正常的。
对于您所拥有的内容,也许可以在DISTINCT(fruits.*)
语句中使用SELECT
来解决您的问题。
希望这有帮助。