có thể chọn trường có tên là chuỗi không?Tên trường mysql từ biến
SELECT 'fieldname' FROM table
tôi cần điều này cho kích hoạt để có tên trường năng động cái gì đó như
SET fieldname = NEW.`name`;
UPDATE table SET fieldname = 1 ;
có thể chọn trường có tên là chuỗi không?Tên trường mysql từ biến
SELECT 'fieldname' FROM table
tôi cần điều này cho kích hoạt để có tên trường năng động cái gì đó như
SET fieldname = NEW.`name`;
UPDATE table SET fieldname = 1 ;
Nếu chuỗi là trong ứng dụng bên ngoài của bạn (như PHP), chắc chắn, chỉ cần xây dựng báo cáo kết quả MySQL.
Nếu chuỗi nằm trong bảng MySQL, bạn không thể. MySQL không có hàm eval() hoặc hàm như vậy. Sau đây là không thể:
Giả sử bạn có bảng 'truy vấn' với trường "cột tên" đề cập đến một trong các tên cột trong bảng "mytable". Có thể có các cột bổ sung trong 'truy vấn' cho phép bạn chọn tên cột bạn muốn ...
INSERT INTO queries (columname) VALUES ("name")
SELECT (select columnname from queries) from mytable
Tuy nhiên, bạn có thể làm việc với PREPARED STATEMENTS. Hãy nhận biết điều này là rất hacky.
SELECT columnname from queries into @colname;
SET @table = 'mytable';
SET @s = CONCAT('SELECT ',@colname,' FROM ', @table);
PREPARE stmt FROM @s;
EXECUTE stmt;
các câu lệnh chuẩn bị không được phép trong các trình kích hoạt ... – samrockon
Có lẽ hơi muộn tại bữa tiệc, nhưng cái quái gì ... Bạn đề cập đến hành vi này rất khó hiểu. Nhưng có lẽ bạn có thể giải thích tại sao điều này? Bởi vì giải pháp này giúp tôi rất nhiều, nhưng tôi không muốn phụ thuộc vào một sửa chữa không ổn định. – mahulst
Mã này bị hack vì nó không sử dụng các tính năng SQL đơn giản (vì các tính năng đó không tồn tại). Nhưng đừng lo lắng, nó ổn định và sẽ không phá vỡ bạn. Đến mười phút trước, tôi đang sử dụng nó trong sản xuất! – dotancohen
Nếu bạn muốn chọn nhiều hơn một cột:
SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.`COLUMNS` C
WHERE table_name = 'MyTb' AND COLUMN_NAME LIKE '%whatever%' INTO @COLUMNS;
SET @table = 'MyTb';
SET @s = CONCAT('SELECT ',@columns,' FROM ', @table);
PREPARE stmt FROM @s;
EXECUTE stmt;
Tôi không hiểu những gì bạn có nghĩa là –
How are you chạy sql? Đọc trên sql động. –
Trường có tên "chuỗi"? 'SELECT \' string \ 'FROM \' table \ ''? – jwueller