2012-10-10 19 views
5

thể trùng lặp:
Include a blank row in query resultsChọn một dòng sản phẩm nào bổ sung mà không tồn tại

Tôi muốn thêm một dòng sản phẩm nào để kết quả của tôi đặt ở đầu rất của truy vấn SQL của tôi .

Truy vấn Tôi đang sử dụng là:

SELECT 
    PROFILETITLE, DOCID 
FROM 
    PROFILES 
WHERE 
    COMPANYCODE = ? 
ORDER BY 
    PROFILETITLE 
+0

Hàng trống là gì? Giả sử rằng 'DOCID' là một' int', định nghĩa rỗng cho một số nguyên. –

+0

Ồ, tôi xin lỗi - một hàng cung cấp kết quả trống cho hàng đó. –

Trả lời

7

Cố gắng sử dụng union all

SELECT null as PROFILETITLE, null as DOCID 
UNION ALL 
SELECT PROFILETITLE, DOCID 
FROM PROFILES 
WHERE COMPANYCODE=? 
ORDER BY PROFILETITLE 

nhưng nếu bạn wont để thêm tiêu đề, và nếu DOCIDint loại, bạn phải sử dụng union allcast như sau

SELECT 'PROFILETITLE' as PROFILETITLE, 'DOCID' as DOCID 
UNION ALL 
SELECT PROFILETITLE, CAST (DOCID AS varchar(30)) 
FROM PROFILES 
WHERE COMPANYCODE=? 
ORDER BY PROFILETITLE 
4

Hãy thử điều này:

SELECT '' AS PROFILETITLE, 0 AS DOCID 
UNION ALL 
SELECT PROFILETITLE, DOCID 
FROM PROFILES WHERE COMPANYCODE = ? 
ORDER BY PROFILETITLE 

Lưu ý rằng khi sử dụng UNION, và tất cả các hoạt động thiết lập khác, các cột phải được xuất hiện trong các loại, Vì vậy bạn phải đặt bí danh hai giá trị trống đầu tiên với PROFILETITLEDOCID. Và bạn phải xem các loại của hai cột cũng như được kết hợp để hoạt động chính xác. Có thể bạn cần chọn NULL thay vì ''0.

+1

có: [Kiểm tra SQL-Fiddle] (http://sqlfiddle.com/#!3/3144b/3) –

+0

Câu trả lời hay .... – Seasoned

0

Bạn có thể sử dụng SQL Union

SELECT PROFILETITLE, DOCID 
FROM PROFILES 
WHERE COMPANYCODE=? ORDER BY PROFILETITLE 
UNION ALL 
SELECT 0, '' 
FROM SYSIBM.SYSDUMMY1 

Bạn có thể thay SYSIBM.SYSDUMMY1 với bảng tạm thời của bạn

0

một union all sẽ thực hiện công việc

SELECT 
'' as PROFILETITLE, 
'' as DOCID 
UNION ALL 
SELECT PROFILETITLE, DOCID 
FROM PROFILES 
WHERE COMPANYCODE=? ORDER BY PROFILETITLE 
3

Bạn có thể thêm một "hàng trống rỗng" nếu tất cả các cột là varchar và trống rỗng phương tiện '' theo cách này :

SELECT PROFILETITLE, DOCID 
FROM PROFILES 
WHERE ... 

UNION ALL 

SELECT '' AS PROFILETITLE, '' AS DOCID 

ORDER BY 
    CASE WHEN PROFILETITLE='' AND DOCID='' THEN 0 ELSE 1 END ASC 
, PROFILETITLE ASC 
Các vấn đề liên quan