Как сделать объединение на 2 таблицы, но вернуть только данные для одной таблицы?

0

Я не уверен, что это возможно. Но возможно ли выполнить соединение на 2 таблицах, но вернуть данные только для одной из таблиц. Я хочу присоединиться к двум таблицам на основе условия, но мне нужны только данные для одной из таблиц. Это возможно с SQL, если да, то как? После прочтения документов кажется, что когда вы делаете соединение, вы получаете данные для обеих таблиц. Спасибо за любую помощь!

Теги:

4 ответа

1
Лучший ответ

Вы получаете данные из обеих таблиц, потому что соединение основано на " Декартовом продукте " + " Выбор ". Но после объединения вы можете сделать " Проецирование " с нужными столбцами.

SQL имеет простой синтаксис для этого:

Select t1.*               --taking data just from one table
from one_table t1
inner join other_table t2
on t1.pk = t2.fk

Вы можете выбрать таблицу через псевдоним: t1.* Или t2.*. Символ * означает "все поля".

Кроме того, вы можете включить where, order by или other types join, такие как outer join или cross join.

  • 0
    Спасибо, это слишком рано. Я скоро дам тебе зеленую галочку.
1

Обычно это делается с использованием exists (или in), если вы предпочитаете:

select t1.*
from table1 t1
where exists (select 1 from table2 t2 on t2.x = t1.y);

Хотя вы можете использовать join, он рискует умножить количество строк в результирующем наборе - если в table2 есть повторяющиеся совпадения. Там нет никакой опасности таких дублей с использованием exists (или in). Я также считаю логику более естественной.

1

Типичный SQL-запрос имеет несколько предложений.

Предложение SELECT указывает столбцы, которые вы хотите в своем результирующем наборе.

Предложение FROM, которое включает операции JOIN, упоминает таблицы, из которых вы хотите получить эти столбцы.

Предложение WHERE фильтрует набор результатов.

Предложение ORDER BY указывает порядок, в котором представлены строки в вашем результирующем наборе.

Есть несколько других предложений, таких как GROUP BY и LIMIT. Вы можете прочитать о них.

Чтобы сделать то, что вы спросите, выберите нужные столбцы, а затем укажите нужные вам таблицы. Что-то вроде этого.

   SELECT t1.id, t1.name, t1.address
     FROM t1
     JOIN t2 ON t2.t1_id = t1.id

Это дает вам данные из t1 из строк, соответствующих t2.

Pro tip: Избегайте использования SELECT *. Вместо этого укажите нужные столбцы.

0

Если вы присоединитесь к 2 столам.

Вы можете использовать SELECT, чтобы выбрать нужные данные.

Если вы хотите получить таблицу данных, вы можете сделать это, просто выберите одну таблицу

SELECT b.title
FROM blog b
JOIN type t ON b.type_id=t.id;

Если вы хотите получить данные из двух таблиц, вы можете сделать это, выберите две таблицы.

SELECT b.title,t.type_name
FROM blog b
JOIN type t ON b.type_id=t.id;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню