Hướng dẫn mysql where exists in another table - mysql nơi tồn tại trong một bảng khác

Tôi có hai bảng.

Bảng một:

ID COLOR    
1  white 
2  red 
3  black 
4  blue 
5  yellow

Bảng hai:

ID COLOR    
1  white 
2  white 
3  red 
4  black 

Đầu ra phải là:

1 white
2 red
3 black

[Loại trừ 2 giá trị không tồn tại trong bảng thứ hai - màu xanh và màu vàng + loại trừ màu trắng thứ hai].

Tôi đã thử các truy vấn tham gia và tồn tại khác nhau, không có may mắn. Cảm ơn.

pala_

8.7731 Huy hiệu vàng14 Huy hiệu bạc32 Huy hiệu đồng1 gold badge14 silver badges32 bronze badges

Đã hỏi ngày 11 tháng 5 năm 2015 lúc 0:37May 11, 2015 at 0:37

5

ID COLOR    
1  white 
2  white 
3  red 
4  black 
0 là phù hợp cho điều này.

select * 
  from t1
  where exists 
    [select 1
      from t2 where color = t1.color];

Bản demo ở đây

Trình điều khiển con là một trình điều khiển con tương quan [vì nó đề cập đến một giá trị từ truy vấn khác], và do đó nó được thực hiện cho mỗi hàng truy vấn bên ngoài. Vì vậy, tất cả các truy vấn bên trong cần phải làm, là kiểm tra và xem liệu màu từ truy vấn bên ngoài [và bảng thứ nhất] có mặt trong bảng thứ hai không.

Đã trả lời ngày 11 tháng 5 năm 2015 lúc 0:44May 11, 2015 at 0:44

pala_pala_pala_

8.7731 Huy hiệu vàng14 Huy hiệu bạc32 Huy hiệu đồng1 gold badge14 silver badges32 bronze badges

5

SELECT DISTINCT t1.* FROM t1 
INNER JOIN t2 ON t1.color = t2.color;

Đã hỏi ngày 11 tháng 5 năm 2015 lúc 0:37

ID COLOR    
1  white 
2  white 
3  red 
4  black 
0 là phù hợp cho điều này.May 11, 2015 at 0:49

Bản demo ở đâyDevon

Trình điều khiển con là một trình điều khiển con tương quan [vì nó đề cập đến một giá trị từ truy vấn khác], và do đó nó được thực hiện cho mỗi hàng truy vấn bên ngoài. Vì vậy, tất cả các truy vấn bên trong cần phải làm, là kiểm tra và xem liệu màu từ truy vấn bên ngoài [và bảng thứ nhất] có mặt trong bảng thứ hai không.9 gold badges64 silver badges92 bronze badges

5

13.2.11.6 & NBSP; Các nhóm phụ có tồn tại hoặc không tồn tại

Nếu một truy vấn con trả về bất kỳ hàng nào,

ID COLOR    
1  white 
2  white 
3  red 
4  black 
1 là
ID COLOR    
1  white 
2  white 
3  red 
4  black 
2 và
ID COLOR    
1  white 
2  white 
3  red 
4  black 
3 là
ID COLOR    
1  white 
2  white 
3  red 
4  black 
4. Ví dụ:

SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];

Theo truyền thống, một truy vấn con

ID COLOR    
1  white 
2  white 
3  red 
4  black 
5 bắt đầu với
ID COLOR    
1  white 
2  white 
3  red 
4  black 
6, nhưng nó có thể bắt đầu bằng
ID COLOR    
1  white 
2  white 
3  red 
4  black 
7 hoặc
ID COLOR    
1  white 
2  white 
3  red 
4  black 
8 hoặc bất cứ điều gì. MySQL bỏ qua danh sách
ID COLOR    
1  white 
2  white 
3  red 
4  black 
9 trong một truy vấn con như vậy, vì vậy nó không có gì khác biệt.

Đối với ví dụ trước, nếu

1 white
2 red
3 black
0 chứa bất kỳ hàng nào, thậm chí các hàng không có gì ngoài các giá trị
1 white
2 red
3 black
1, điều kiện
ID COLOR    
1  white 
2  white 
3  red 
4  black 
5 là
ID COLOR    
1  white 
2  white 
3  red 
4  black 
2. Đây thực sự là một ví dụ không thể xảy ra bởi vì một truy vấn con
1 white
2 red
3 black
4 hầu như luôn luôn chứa các mối tương quan. Dưới đây là một số ví dụ thực tế hơn:

  • Những loại cửa hàng có mặt trong một hoặc nhiều thành phố?

    SELECT DISTINCT store_type FROM stores
      WHERE EXISTS [SELECT * FROM cities_stores
                    WHERE cities_stores.store_type = stores.store_type];
  • Loại cửa hàng nào có mặt ở No City?

    SELECT DISTINCT store_type FROM stores
      WHERE NOT EXISTS [SELECT * FROM cities_stores
                        WHERE cities_stores.store_type = stores.store_type];
  • Những loại cửa hàng có mặt ở tất cả các thành phố?

    SELECT DISTINCT store_type FROM stores s1
      WHERE NOT EXISTS [
        SELECT * FROM cities WHERE NOT EXISTS [
          SELECT * FROM cities_stores
           WHERE cities_stores.city = cities.city
           AND cities_stores.store_type = stores.store_type]];

Ví dụ cuối cùng là truy vấn

1 white
2 red
3 black
5 được lồng đôi. Đó là, nó có một mệnh đề
1 white
2 red
3 black
5 trong mệnh đề
1 white
2 red
3 black
7. Chính thức, nó trả lời câu hỏi mà một thành phố có tồn tại với một cửa hàng không có trong
1 white
2 red
3 black
8 không? Nhưng sẽ dễ dàng hơn để nói rằng một
1 white
2 red
3 black
7 được lồng vào câu hỏi là
select * 
  from t1
  where exists 
    [select 1
      from t2 where color = t1.color];
0
ID COLOR    
1  white 
2  white 
3  red 
4  black 
2 cho tất cả
select * 
  from t1
  where exists 
    [select 1
      from t2 where color = t1.color];
2?does a city exist with a store that is not in
1 white
2 red
3 black
8
? But it is easier to say that a nested
1 white
2 red
3 black
7 answers the question is
select * 
  from t1
  where exists 
    [select 1
      from t2 where color = t1.color];
0
ID COLOR    
1  white 
2  white 
3  red 
4  black 
2 for all
select * 
  from t1
  where exists 
    [select 1
      from t2 where color = t1.color];
2?

Trong MySQL 8.0.19 và sau đó, bạn cũng có thể sử dụng

1 white
2 red
3 black
5 hoặc
1 white
2 red
3 black
7 với
select * 
  from t1
  where exists 
    [select 1
      from t2 where color = t1.color];
5 trong truy vấn con, như thế này:

SELECT column1 FROM t1 WHERE EXISTS [TABLE t2];

Các kết quả giống như khi sử dụng

select * 
  from t1
  where exists 
    [select 1
      from t2 where color = t1.color];
6 mà không có mệnh đề
select * 
  from t1
  where exists 
    [select 1
      from t2 where color = t1.color];
7 trong truy vấn con.


Làm thế nào để bạn kiểm tra xem một giá trị có tồn tại trong một bảng SQL khác không?

Làm thế nào để bạn kiểm tra xem bảng có chứa bất kỳ dữ liệu nào trong SQL không? Sử dụng mệnh đề tồn tại trong câu lệnh IF để kiểm tra sự tồn tại của một bản ghi. Sử dụng mệnh đề tồn tại trong tuyên bố trường hợp để kiểm tra sự tồn tại của một bản ghi. Sử dụng mệnh đề tồn tại trong mệnh đề WHERE để kiểm tra sự tồn tại của một bản ghi.Using EXISTS clause in the IF statement to check the existence of a record. Using EXISTS clause in the CASE statement to check the existence of a record. Using EXISTS clause in the WHERE clause to check the existence of a record.

Làm cách nào để chọn tất cả các bản ghi trong một bảng tồn tại trong một bảng khác?

Chọn [Chọn cột] từ Bảng 1 Tham gia bên ngoài bên phải TABLE2 BẬT [Bảng1. SQL> Chọn e. Chọn [Chọn cột] từ Bảng 1 tham gia bên ngoài bên phải Bảng 2 trên [Bảng1. Chọn cột_name từ Bảng 1 Tham gia bên ngoài đầy đủ Bảng 2 trên [Kết nối];Ở đây tất cả các dữ liệu từ Bảng 1 và Bảng 2 sẽ được truy xuất.

Làm thế nào để bạn có được các bản ghi không có trong một bảng khác trong MySQL?

Chúng ta có thể nhận được các bản ghi trong một bảng không tồn tại trong một bảng khác bằng cách sử dụng không hoặc không tồn tại với các truy vấn con bao gồm bảng khác trong các nghiên cứu phụ.using NOT IN or NOT EXISTS with the subqueries including the other table in the subqueries.

Làm thế nào tôi có thể nhận ID từ bảng này sang bảng khác trong MySQL?

$ get_teacher = mysqli_query [$ link, "chọn id từ giáo viên trong đó first_name = '$ pound_first_name' và last_name = '$ pound_last_name'"];$ get_teacher_arr = mysqli_fetch_array [$ get_teacher];$ result = mysqli_query [$ link, "chèn vào học sinh [student_id, first_name, last_name, pound_id] giá trị ['$ student_id', '$ ...

Bài Viết Liên Quan

Chủ Đề