Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để chèn các giá trị ngẫu nhiên vào bảng SQL Server?

Khi công cụ truy vấn thấy điều này ...

(SELECT TOP 1 [val] FROM @randomStuff ORDER BY NEWID())

... tất cả giống như, "ooooh, một truy vấn con vô hướng có thể truy cập được, tôi sẽ lưu vào bộ nhớ cache đó!"

Bạn cần đánh lừa công cụ truy vấn nghĩ rằng nó không thể truy cập được. jfar's câu trả lời đã đóng, nhưng công cụ truy vấn đủ thông minh để xem danh mục của MyTable.MyColumn = MyTable.MyColumn , nhưng không đủ thông minh để nhìn thấu điều này.

UPDATE MyTable
   SET MyColumn = (SELECT TOP 1 val
                     FROM @randomStuff r
                          INNER JOIN MyTable _MT
                                  ON M.Id = _MT.Id
                    ORDER BY NEWID())
 FROM MyTable M

Bằng cách đưa bảng bên ngoài (MT) vào truy vấn con, công cụ truy vấn giả định rằng truy vấn con sẽ cần được đánh giá lại. Mọi thứ sẽ hoạt động thực sự, nhưng tôi đã sử dụng khóa chính (giả định) của MyTable.Id vì nó sẽ được lập chỉ mục và sẽ thêm rất ít chi phí.

Một con trỏ có thể sẽ nhanh như vậy, nhưng chắc chắn là không thú vị bằng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gặp sự cố với UnixODBC, FreeTDS và PyODBC

  2. Làm cách nào để có được 50% dưới cùng của một truy vấn được chọn trong máy chủ SQL?

  3. SQL Server 2016:Luôn được mã hóa

  4. Các trường hợp sử dụng cho câu lệnh MERGE của máy chủ SQL:Đồng bộ hóa bảng lịch sử và trực tuyến

  5. Tính toán chi phí trung bình có trọng số vĩnh viễn SQL Server 2008