Как сравнить одно значение со значением, соответствующим другому значению?

0

Вопрос

У меня есть столик:

Table 1
pizza     |price|country|base
-----------------------------------
americano | 2   | U.S   | wholemeal
funghi    | 3   | Italy | wholemeal
sicilliano| 7   | Italy | wholemeal

Мне нужно перечислить все pizza элементы, которые имеют одинаковые country стихия, как сицилиано pizza, не используя подзапрос.

mysql
2021-11-24 00:48:27
1

Лучший ответ

1

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     |
| сицилиано |

бд<>скрипка <>здесь

2021-11-24 08:56:30

Могу я попросить еще кое-каких объяснений? Я пробовал читать эти руководства, однако, кажется, не могу этого понять.
czarniecki

я добавил некоторое объяснение, в общем, показать весь столбец, и поэтому вы лучше видите, что делает соединение или предложение where
nbk

А если бы я хотел перечислить все пиццы, цены на которые выше, чем на конкретную? ВЫБЕРИТЕ t2.пицца ИЗ меню t1 ВНУТРЕННЕЕ меню СОЕДИНЕНИЯ t2 НА t1.цена = t2.цена, ГДЕ t1.цена > "американо"; Я пробовал что-то подобное, но, очевидно, вы не можете сравнить строку с целым числом>
czarniecki

то же самое и с подзапросом, если вам нужно выбрать цену американо, без необходимости присоединиться к другой таблице, которая фильтрует все, что меньше, дайте ей trz или задайте другой вопрос, теперь у вас есть ссылка на скрипку, которую вы можете добавить
nbk

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................