Hướng dẫn mysql select multiple rows into variable - mysql chọn nhiều hàng thành biến

Truy vấn sau đây dường như chỉ hoạt động khi có một mục nhập duy nhất với

SELECT id
FROM USER
WHERE dateOfBirth='1975-02-28'
2 được đặt thành
SELECT id
FROM USER
WHERE dateOfBirth='1975-02-28'
3.

Nó thất bại khi có nhiều hồ sơ phù hợp với điều kiện này.

Có thể xóa tất cả các địa chỉ của người dùng có thuộc tính

SELECT id
FROM USER
WHERE dateOfBirth='1975-02-28'
2 được đặt thành
SELECT id
FROM USER
WHERE dateOfBirth='1975-02-28'
3 mà không cần sử dụng SB.

SELECT @id:=[SELECT id
             FROM USER
             WHERE dateOfBirth='1975-02-28'];
DELETE FROM Address
WHERE user_id=@id;

Lỗi chính xác mà tôi nhận được là:

SELECT id
FROM USER
WHERE dateOfBirth='1975-02-28'
6.

Tonio

4044 Huy hiệu bạc17 Huy hiệu đồng4 silver badges17 bronze badges

Đã hỏi ngày 2 tháng 7 năm 2014 lúc 13:58Jul 2, 2014 at 13:58

2

Lỗi có nghĩa là truy vấn bên trong của bạn không trả lại một hàng khi bạn cố gắng gán ID cho một biến.

SELECT id
FROM USER
WHERE dateOfBirth='1975-02-28'

Gán các giá trị cho các truy vấn thông qua biến phải luôn luôn là kết quả đơn hàng. Nếu bạn muốn lưu trữ kết quả đa cột, bạn có thể làm như sau:

SELECT field_1, field_2, field_3 INTO @var_a, @var_b, @var_c FROM any_table

Nhưng vì bạn đã hỏi điều này:

Có thể xóa tất cả các địa chỉ của người dùng có thuộc tính

SELECT id
FROM USER
WHERE dateOfBirth='1975-02-28'
2 được đặt thành
SELECT id
FROM USER
WHERE dateOfBirth='1975-02-28'
3 mà không cần sử dụng SB.

Lỗi chính xác mà tôi nhận được là:

SELECT id
FROM USER
WHERE dateOfBirth='1975-02-28'
6.

Tonio

4044 Huy hiệu bạc17 Huy hiệu đồngSep 1, 2015 at 13:53

Đã hỏi ngày 2 tháng 7 năm 2014 lúc 13:58

Lỗi có nghĩa là truy vấn bên trong của bạn không trả lại một hàng khi bạn cố gắng gán ID cho một biến.

DELETE FROM Address
WHERE user_id IN [SELECT id
                  FROM USER
                  WHERE dateOfBirth='1975-02-28'];

EDIT:

Gán các giá trị cho các truy vấn thông qua biến phải luôn luôn là kết quả đơn hàng. Nếu bạn muốn lưu trữ kết quả đa cột, bạn có thể làm như sau:

SELECT @ids:=[SELECT id
              FROM USER
              WHERE dateOfBirth='1975-02-28'];

Nhưng vì bạn đã hỏi điều này:

Như Tonio đã nói, hãy thay đổi truy vấn xóa của bạn theo đề xuất của anh ấy và nó sẽ hoạt động.

Xóa khỏi địa chỉ WHERE user_id in [chọn ID từ người dùng nơi DateOfBirth = '1975-02-28'];

Đã trả lời ngày 1 tháng 9 năm 2015 lúc 13:53Jul 3, 2014 at 11:43

Nếu có nhiều hơn một mục nhập như vậy, con

SELECT id
FROM USER
WHERE dateOfBirth='1975-02-28'
9 sẽ trả về một bảng ID.Tonio

4044 Huy hiệu bạc17 Huy hiệu đồng4 silver badges17 bronze badges

4

Đã hỏi ngày 2 tháng 7 năm 2014 lúc 13:58

Lỗi có nghĩa là truy vấn bên trong của bạn không trả lại một hàng khi bạn cố gắng gán ID cho một biến.

delete a from address a join user u on [a.user_id=u.id] 
where u.dateOfBirth='1975-02-28';

Gán các giá trị cho các truy vấn thông qua biến phải luôn luôn là kết quả đơn hàng. Nếu bạn muốn lưu trữ kết quả đa cột, bạn có thể làm như sau:

Nhưng vì bạn đã hỏi điều này:1 gold badge11 silver badges23 bronze badges

Như Tonio đã nói, hãy thay đổi truy vấn xóa của bạn theo đề xuất của anh ấy và nó sẽ hoạt động.Oct 29, 2018 at 17:43

Khi bạn cần lấy một hàng từ bảng hoặc truy vấn, bạn có thể sử dụng cú pháp sau trong SQL Server:

   DECLARE @name VARCHAR[30];
   SELECT @name = city FROM cities;

Nhưng điều gì xảy ra nếu chọn trả về nhiều hàng?

Giả sử chúng tôi có định nghĩa bảng và dữ liệu sau:

  CREATE TABLE cities [city VARCHAR[30]];
 
  INSERT INTO cities VALUES ['St. Louis'];
  INSERT INTO cities VALUES ['San Diego'];
  INSERT INTO cities VALUES ['Seattle'];

Hãy chạy dữ liệu chọn và đầu ra:

   DECLARE @name VARCHAR[30];
   SELECT @name = city FROM cities;
   PRINT @name;
 
   -- Prints Seattle

SQL Server không gây ra lỗi và trả về giá trị cuối cùng. Nó xác định số lượng hàng đáp ứng tiêu chí tìm kiếm và bạn có thể có được số này bằng cách sử dụng @@ Rowcount:

   DECLARE @name VARCHAR[30];
   SELECT @name = city FROM cities;
   PRINT @@ROWCOUNT;
 
   -- Prints 3

Lưu ý rằng khi bạn muốn truy xuất một hàng, nhưng nhiều hàng có thể đáp ứng điều kiện tìm kiếm, bạn phải kiểm tra @@ ROWCOUNT> 0, không phải @@ RowCount = 1 để xác định nếu một hàng tồn tại:

SELECT id
FROM USER
WHERE dateOfBirth='1975-02-28'
0

Vì SQL Server cố gắng tìm tất cả các hàng [để tính toán @@ rowcount] trong khi bạn chỉ muốn tìm hàng đầu tiên, hãy xem xét sử dụng Top 1 trong truy vấn:

SELECT id
FROM USER
WHERE dateOfBirth='1975-02-28'
1

Khi bạn sử dụng Top 1, bạn có thể kiểm tra một cách an toàn @@ Rowount = 1 để xác định nếu một hàng được tìm thấy.

Tài nguyên di cư

Làm cách nào để gán nhiều giá trị cho một biến trong MySQL?

Gán biến MySQL Có hai cách gán giá trị cho biến do người dùng xác định. Bạn có thể sử dụng một trong hai: = hoặc = làm toán tử gán trong câu lệnh SET. Ví dụ: câu lệnh gán số 100 cho biến @Count. Cách thứ hai để gán một giá trị cho một biến là sử dụng câu lệnh select.use either := or = as the assignment operator in the SET statement. For example, the statement assigns number 100 to the variable @counter. The second way to assign a value to a variable is to use the SELECT statement.

Làm cách nào để chọn nhiều bản ghi trong MySQL?

Để chọn nhiều giá trị, bạn có thể sử dụng mệnh đề WHERE với OR và trong toán tử.use where clause with OR and IN operator.

Làm cách nào để chỉ định một lựa chọn cho một biến trong MySQL?

Cú pháp để gán giá trị cho biến SQL trong truy vấn chọn là @ var_name: = value, trong đó var_name là tên biến và giá trị là giá trị mà bạn đang truy xuất.Biến có thể được sử dụng trong các truy vấn tiếp theo bất cứ nơi nào cho phép biểu thức, chẳng hạn như trong một mệnh đề WHERE hoặc trong một câu lệnh chèn.@ var_name := value , where var_name is the variable name and value is a value that you're retrieving. The variable may be used in subsequent queries wherever an expression is allowed, such as in a WHERE clause or in an INSERT statement.

Làm thế nào tôi có thể thêm nhiều giá trị vào một biến trong SQL?

Truy vấn chèn-lựa chọn-Union Để chèn nhiều bản ghi do đó, chúng ta có thể sử dụng truy vấn Unit-Select-Union để chèn dữ liệu vào nhiều hàng của bảng.Truy vấn SQL Union giúp chọn tất cả dữ liệu đã được đặt bởi truy vấn chọn thông qua câu lệnh Chèn. to insert multiple records Thus, we can use INSERT-SELECT-UNION query to insert data into multiple rows of the table. The SQL UNION query helps to select all the data that has been enclosed by the SELECT query through the INSERT statement.

Bài Viết Liên Quan

Chủ Đề