PDA

View Full Version : Sự cố Insert sql



DIEN
26-10-2004, 09:16
Mình muốn insert dữ liệu vào bảng temp01 bằng câu lệnh:
insert into temp01(khach_hang) values('select * from temp where ma_kh='01'')
-> insert nguyên 1 câu lệnh select vào field khach_hang
vì trong câu insert của mình còn có thêm dấu nháy do đó nó sẽ báo lỗi.
Vậy bác nào có thể khắc phục được sự cố trên không? mong các bác giúp đỡ.

freegianghu
26-10-2004, 09:24
Mình muốn insert dữ liệu vào bảng temp01 bằng câu lệnh:
insert into temp01(khach_hang) values('select * from temp where ma_kh='01'')
-> insert nguyên 1 câu lệnh select vào field khach_hang
vì trong câu insert của mình còn có thêm dấu nháy do đó nó sẽ báo lỗi.
Vậy bác nào có thể khắc phục được sự cố trên không? mong các bác giúp đỡ.
insert into temp01(khach_hang) values('select * from temp where ma_kh="01"')

DIEN
26-10-2004, 09:45
Nếu làm như FreeGianghu nói thì không được. Vì sau đó mình còn lấy câu select đó để lọc lấy dữ liệu cho vb nữa.
Nếu vậy khi dùng câu lệnh select * from temp where ma_kh="01" thì không được

freegianghu
26-10-2004, 10:01
Nếu làm như FreeGianghu nói thì không được. Vì sau đó mình còn lấy câu select đó để lọc lấy dữ liệu cho vb nữa.
Nếu vậy khi dùng câu lệnh select * from temp where ma_kh="01" thì không được
Cơ sở dữ liệu bạn dùng hơi kém đấy! Thử escape xem sao:

insert into temp01(khach_hang) values('select * from temp where ma_kh=\'01\'')

InfernoVN
26-10-2004, 10:04
insert into temp01(khach_hang) values('select * from temp where ma_kh='01'')

Câu lệnh trên có chỗ sai là: chỉ insert dữ liệu vào 1 field trong bảng temp01 - nhưng bạn lại select dữ liệu từ nhiều field (SELECT *) trong bảng temp, vì vậy nên nó sẽ lỗi.

Sửa lại:
INSERT INTO Temp01 (khach_hang) SELECT khach_hang FROM Temp WHERE ma_kh='01'

Enjoy it!!!

freegianghu
26-10-2004, 10:11
insert into temp01(khach_hang) values('select * from temp where ma_kh='01'')

Câu lệnh trên có chỗ sai là: chỉ insert dữ liệu vào 1 field trong bảng temp01 - nhưng bạn lại select dữ liệu từ nhiều field (SELECT *) trong bảng temp, vì vậy nên nó sẽ lỗi.

Sửa lại:
INSERT INTO Temp01 (khach_hang) SELECT khach_hang FROM Temp WHERE ma_kh='01'

Enjoy it!!!

Nếu tôi hiểu đúng thì bạn hiểu sai: ý ông kia là muốn insert một câu SQL vào bảng dữ liệu.

InfernoVN
26-10-2004, 10:15
Có lẽ vậy... ^^ :)

DIEN
26-10-2004, 10:22
Cơ sở dữ liệu bạn dùng hơi kém đấy! Thử escape xem sao:

insert into temp01(khach_hang) values('select * from temp where ma_kh=\'01\'')
đúng như bạn nói mình muốn insert 1 câu select vào 1 field. Mình đã dùng câu lệnh insert của bạn(như trên) nhưng mà vẫn không được. Bạn có cách nào khác không???????

freegianghu
26-10-2004, 10:36
đúng như bạn nói mình muốn insert 1 câu select vào 1 field. Mình đã dùng câu lệnh insert của bạn(như trên) nhưng mà vẫn không được. Bạn có cách nào khác không???????

Tôi tìm trên mạng thấy nó bảo escape là một dấu nháy đơn:
insert into temp01(khach_hang) values('select * from temp where ma_kh=''01''')

dragonkiss
19-11-2004, 21:18
Câu query trên có vấn đề thì phải


insert into temp01(khach_hang) values('select * from temp where ma_kh='01'')


Insert dữ liệu vào bảng temp01 với trường khach_hang mà dữ liệu lại lấy từ bảng temp ( chưa biết có bao nhiêu trường ).....kỳ dzị ?

Sao không set values insert vào là một giá trị nào đó rồi tiếp theo định danh cho giá trị đó bằng 1 câu query khác !

chungtt
20-11-2004, 09:42
quote

insert into temp01(khach_hang) values('select * from temp where ma_kh=''01''')

end quote

các bố dở hơi à, người ra đã trả lời rồi còn gì nữa. Để insert một chuỗi có dấu nháy đơn ('), chỉ việc thay nó bằng hai dấu nháy đơn (''). Kết quả của câu trên trong cơ sở dữ liệu sẽ là select * from temp where ma_kh='01'

dragonkiss
20-11-2004, 09:55
Cái tui thắc mắc là có thể insert đượf 1 row trong bảng này vào trong 1 field của row trong bảng khác được ah ?

itkit
07-12-2004, 13:22
quote

insert into temp01(khach_hang) values('select * from temp where ma_kh=''01''')

end quote

các bố dở hơi à, người ra đã trả lời rồi còn gì nữa. Để insert một chuỗi có dấu nháy đơn ('), chỉ việc thay nó bằng hai dấu nháy đơn (''). Kết quả của câu trên trong cơ sở dữ liệu sẽ là select * from temp where ma_kh='01'

Đúng chóc:
câu đó sẽ là:
insert into temp01(khach_hang) values('select * from temp where ma_kh=''01''')