Hiển thị kết quả từ 1 đến 8 / 8
  1. #1
    Tham gia
    12-09-2009
    Location
    LV, Đồng Tháp
    Bài viết
    71
    Like
    1
    Thanked 4 Times in 4 Posts

    Tệ thật ! Làm sao để có cột số thứ tự (stt) vào kết quả của query ?

    Chào các bạn !
    Có một bảng như sau MaHang(MaHang, TenHang)
    Trong bảng MaHang có 5 dòng
    Select * from MaHang thì được 5 dòng trong bảng
    Bây giờ mình muốn trước cột MaHang có thêm cột stt nữa thì viết/làm thế nào ?

    Cảm ơn các bạn.
    Quote Quote

  2. #2
    Tham gia
    16-08-2010
    Bài viết
    2
    Like
    0
    Thanked 0 Times in 0 Posts

    Thêm cột thêm hàng

    Quote Được gửi bởi longhovn View Post
    Chào các bạn !
    Có một bảng như sau MaHang(MaHang, TenHang)
    Trong bảng MaHang có 5 dòng
    Select * from MaHang thì được 5 dòng trong bảng
    Bây giờ mình muốn trước cột MaHang có thêm cột stt nữa thì viết/làm thế nào ?

    Cảm ơn các bạn.
    Chào bạn!
    mình mạo muội trả lời câu hởi của bạn!
    ý của bạn là muốn chèn thêm cột vào trước cột Mã hàng của bạn?
    vậy bạn đưa chuột lên nhấp vào cột Ma hàng sau đó chọn Insert chọn Cells thì sẽ ra cột bạn muốn. tương tự thế nếu bạn muốn 2 cột trước cột Mã hàng thì bạn nhấp chuột vào cột vào Insrt chọn Cells thì sẽ ra 2 a cột cho bạn.
    nếu bạn chọn dòng thì các làm tương tự vào Insert chọn Rcwr
    chúc bạn vui!

  3. #3
    Tham gia
    12-09-2009
    Location
    LV, Đồng Tháp
    Bài viết
    71
    Like
    1
    Thanked 4 Times in 4 Posts

    Có lẽ diễn đạt câu hỏi chưa rõ

    Cảm ơn haithon,
    mình muốn dùng viết query để đạt ý muốn chứa không phải thêm cột vào bảng.

  4. #4
    Tham gia
    16-08-2010
    Bài viết
    2
    Like
    0
    Thanked 0 Times in 0 Posts
    Chào bạn,
    Tôi cũng đang có vướng mắc như bạn.
    Khi tạo 1 query, nếu mình muốn có thêm cột tự động đánh số thứ tự trong query đó thì làm thế nào.
    Mong các cao thủ chỉ giúp

  5. #5
    Tham gia
    20-07-2009
    Location
    Hà Nội
    Bài viết
    125
    Like
    0
    Thanked 8 Times in 8 Posts
    Có 1 vài cách như sau

    - Sử dụng SELECT INTO và IDENTITY
    Kết quả trả về sẽ được cho vào 1 bảng tạm
    Ví dụ :
    Code:
    SELECT Col1, Col2 FROM TableA
    Thì sẽ viết lại như sau

    Code:
    SELECT IDENTITY(INT,1,1) AS STT, Col1, Col2 
    INTO #TableTemp
    FROM TableA
    
    SELECT * FROM #TableTemp
    Tôi thường dùng cách này với Stored Proc

    - Cách 2: Sử dụng ROW_NUMBER() Có trong phiên bản SQL Server 2005 trở về sau
    - Cách 3: Sử dụng với trường hợp kêt quả trả ra có 1 cột Unique( thường là khóa chính)

    Cách này hơi tốn tài nguyên, do phải truy vấn lồng với từng bản ghi trong kết quả nên tôi không đưa lên

    Thường sử dụng cách 1 và 2 là đủ

    Bác nào có cách giải quyết tốt hơn xin chia sẻ

  6. #6
    Tham gia
    12-09-2009
    Location
    LV, Đồng Tháp
    Bài viết
    71
    Like
    1
    Thanked 4 Times in 4 Posts

    Bài toán đã có lời giải !

    Cảm ơn Red Devilic 1, xem như bài toán đã có lời giải.
    Hy vọng nhận được sự chia sẻ thêm của thành viên khác.

  7. #7
    Tham gia
    20-02-2009
    Location
    Ninh Bình
    Bài viết
    567
    Like
    0
    Thanked 34 Times in 31 Posts
    Quote Được gửi bởi Red Devilic 1 View Post
    Có 1 vài cách như sau

    - Sử dụng SELECT INTO và IDENTITY
    Kết quả trả về sẽ được cho vào 1 bảng tạm
    Ví dụ :
    Code:
    SELECT Col1, Col2 FROM TableA
    Thì sẽ viết lại như sau

    Code:
    SELECT IDENTITY(INT,1,1) AS STT, Col1, Col2 
    INTO #TableTemp
    FROM TableA
    
    SELECT * FROM #TableTemp
    Tôi thường dùng cách này với Stored Proc

    - Cách 2: Sử dụng ROW_NUMBER() Có trong phiên bản SQL Server 2005 trở về sau
    - Cách 3: Sử dụng với trường hợp kêt quả trả ra có 1 cột Unique( thường là khóa chính)

    Cách này hơi tốn tài nguyên, do phải truy vấn lồng với từng bản ghi trong kết quả nên tôi không đưa lên

    Thường sử dụng cách 1 và 2 là đủ

    Bác nào có cách giải quyết tốt hơn xin chia sẻ
    Có mấy cách thì bạn bày hàng ra hết rồi, còn cách nào nữa?

    Tuy nhiên, tôi chỉ thêm ý kiến rằng, dùng ROW_NUMBER() chậm lắm, đặc biệt nếu biểu thức nằm trong OVER() không được tuyển chọn kỹ càng.

    Cách dùng INDENTITY() INTO #bảng tạm, nói chung vẫn là cách tốt nhất, an toàn nhất trong hầu hết mọi trường hợp.

  8. Thành viên Like bài viết này:


  9. #8
    Tham gia
    20-07-2009
    Location
    Hà Nội
    Bài viết
    125
    Like
    0
    Thanked 8 Times in 8 Posts
    Vâng, bác nói đúng.
    Khi query sử dụng ROW_NUMBER(), nếu biểu thức trong OVER() đòi hỏi Sắp xếp, mà việc sắp xếp này không cần thiết, hoặc không dùng dc index thì có thể ảnh hưởng đến hiệu năng

    Tốt nhất, các bạn nên thử từng trường hợp để chọn ra cách giải quyết tốt nhất với dữ liệu

  10. Thành viên Like bài viết này:


Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •