Có cách nào để kết hợp ORDER BY
và IS NULL
trong sql để tôi có thể đặt hàng theo cột nếu cột không rỗng, nhưng nếu cột đó không có giá trị bởi một cột khác?Đặt hàng theo Cột1 nếu Cột1 không rỗng, nếu không, theo thứ tự của Cột2
Cảm ơn!
Có cách nào để kết hợp ORDER BY
và IS NULL
trong sql để tôi có thể đặt hàng theo cột nếu cột không rỗng, nhưng nếu cột đó không có giá trị bởi một cột khác?Đặt hàng theo Cột1 nếu Cột1 không rỗng, nếu không, theo thứ tự của Cột2
Cảm ơn!
Cái gì như:
ORDER BY CASE
WHEN Column1 IS NOT NULL THEN Column1
ELSE Column2
END
Tương tự như viết:
ORDER BY IFNULL(Column1, Column2)
cảm ơn bạn rất nhiều. Tôi không hiểu câu này NULL: "giá trị xuất hiện ở đầu khi sắp xếp tăng dần để cho tất cả NULL" bạn có thể giải thích thêm một chút không? – 1252748
NULL nhỏ hơn bất kỳ giá trị nào khi sắp xếp tăng dần. Nếu dữ liệu của bạn là kết quả phân loại tăng dần '-1, 0, 1, NULL' trong' NULL, -1, 0, 1'. –
này 'ORDER BY CASE WHEN Column1 IS NULL THEN Column2 ELSE Column1 END' dường như rõ ràng hơn một chút đối với tôi. ihave_ để sử dụng câu lệnh 'END'? – 1252748
Bạn có thể thử như sau:
ORDER BY ISNULL(firstField, secondField)
MySQL ISNULL trả về 1/0, không phải là cột không null (ý bạn là IFNULL?). –
Hãy thử điều này
ORDER BY COALESCE(fieldA, fieldB);
tôi không có bất kỳ Bàn ATM nơi tôi có thể kiểm tra nó, nhưng điều này có thể làm việc, ít nhất là nó đã không có dữ liệu sử dụng được:
SELECT * FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE 1
ORDER BY IF(table2.id, table1.id, table1.name)
Ngoài ra tôi không biết làm thế nào để có thể trông giống như nếu table2. id là null đôi khi, có vẻ rất không ổn định.
Không có 'IF' trong SQL (chắc chắn không phải cho Postgres) –
[http://stackoverflow.com/questions/5055540/order-by-countcolumns-not-null][1] - đây là câu trả lời cho câu hỏi của bạn [1]: http: // stackoverflow.com/questions/5055540/order-by-countcolumns-not-null – yAnTar