INNER JOIN
ту же таблицу см. в руководстве о соединении
Поскольку вы не хотите вложенный запрос, вы обходите его, используя join, при запуске
SELECT t1.*,t2.* FROM Table1 t1 INNER JOIN Table1 t2 ON t1.`country` = t2.`country`
Вы видите, что всегда строка страны в t1, вы находите строку из t2.
Таким образом, для siziliano в t1 вы получаете фунги и siziliano в t2.
Остальное - это сокращение всех строк t2 до тех, которые вам нужны
CREATE TABLE IF NOT EXISTS Table1 (
`pizza` VARCHAR(10),
`price` INTEGER,
`country` VARCHAR(5),
`base` VARCHAR(9)
);
INSERT IGNORE INTO Table1
(`pizza`, `price`, `country`, `base`)
VALUES
('americano', '2', 'U.S', 'wholemeal'),
('funghi', '3', 'Italy', 'wholemeal'),
('sicilliano', '7', 'Italy', 'wholemeal');
SELECT t2.`pizza` FROM Table1 t1 INNER JOIN Table1 t2 ON t1.`country` = t2.`country` WHERE t1.`pizza` = 'sicilliano'
| пицца |
| :--------- |
| funghi |
| сицилиано |
бд<>скрипка <>здесь