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

Làm cách nào tôi có thể chọn * từ một bảng trong MySQL nhưng bỏ qua các cột nhất định?

Mặc dù nhiều người nói rằng cách tốt nhất là liệt kê rõ ràng mọi cột bạn muốn trả về, nhưng có những trường hợp bạn có thể muốn tiết kiệm thời gian và bỏ qua một số cột nhất định khỏi kết quả (ví dụ:thử nghiệm). Dưới đây, tôi đã đưa ra hai tùy chọn giải quyết vấn đề này.

1. Tạo một chức năng truy xuất tất cả các tên cột mong muốn:(Tôi đã tạo một lược đồ có tên là các hàm để giữ hàm này)

DELIMITER $$

CREATE DEFINER=`root`@`%` FUNCTION `getTableColumns`(_schemaName varchar(100), _tableName varchar(100), _omitColumns varchar(200)) RETURNS varchar(5000) CHARSET latin1
BEGIN
    SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.columns 
    WHERE table_schema = _schemaName AND table_name = _tableName AND FIND_IN_SET(COLUMN_NAME,_omitColumns) = 0 ORDER BY ORDINAL_POSITION;
END

Tạo và thực thi câu lệnh select:

SET @sql = concat('SELECT ', (SELECT 
functions.getTableColumns('test', 'employees', 'age,dateOfHire')), ' FROM test.employees'); 
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;

2. HOẶC không cần viết một hàm, bạn có thể:

SET @sql = CONCAT('SELECT ', (SELECT GROUP_CONCAT(COLUMN_NAME) FROM 
information_schema.columns WHERE table_schema = 'test' AND table_name = 
'employees' AND column_name NOT IN ('age', 'dateOfHire')), 
' from test.eployees');  
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;

* Thay thế thử nghiệm bằng tên lược đồ của riêng bạn

** Thay thế nhân viên bằng tên bảng của riêng bạn

*** Thay thế age, dateOfHire bằng các cột bạn muốn bỏ qua (bạn có thể để trống để trả về tất cả các cột hoặc chỉ nhập một tên cột để bỏ qua)

** ** Bạn có thể điều chỉnh độ dài của các varchars trong hàm để đáp ứng nhu cầu của bạn



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật MySQL hoặc đổi tên khóa trong JSON

  2. Nhóm MySQL Theo với số N hàng đầu của mỗi loại

  3. mysql - Tôi đã xóa bảng người dùng! làm thế nào tôi có thể khôi phục nó?

  4. Lợi thế của việc sử dụng Chế độ xem trong MySQL

  5. MySQL - Làm thế nào để tìm kiếm kết hợp từ chính xác bằng cách sử dụng LIKE?