Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara mendapatkan baris yang nilai kolomnya bukan nol

Saya menemukan sesuatu, tetapi itu berarti menggunakan KURSOR

DECLARE @ColumnName VARCHAR(200)
DECLARE @ColumnCount INT
DECLARE @sql VARCHAR(400)

CREATE TABLE #tempTable (Id INT)

DECLARE GetNonNullRows CURSOR 
FOR 
    SELECT c.NAME, (SELECT COUNT(*) FROM sys.columns col WHERE col.object_id = c.OBJECT_ID)  FROM sys.tables AS t
    JOIN sys.columns AS c ON t.object_id = c.object_id
    WHERE t.name = 'SomeTable' AND t.type = 'U'

OPEN GetNonNullRows
FETCH NEXT FROM GetNonNullRows INTO @ColumnName, @ColumnCount
WHILE @@FETCH_STATUS = 0
BEGIN
    SET @sql = 'SELECT st.UniqueId FROM SomeTable AS st WHERE ' + CONVERT(varchar, @ColumnName) + ' IS NOT NULL'    
    INSERT INTO #tempTable
    EXEC (@sql)

FETCH NEXT FROM GetNonNullRows INTO @ColumnName, @ColumnCount
END 

CLOSE GetNonNullRows
DEALLOCATE GetNonNullRows

SELECT * FROM SomeTable AS st1
WHERE st1.UniqueId IN (SELECT Id FROM #tempTable AS tt
GROUP BY Id
HAVING COUNT(Id) = @ColumnCount)


DROP TABLE #tempTable

Izinkan saya menjelaskannya sedikit.

Pertama saya membuat kursor yang beralih melalui semua kolom dari satu tabel. Untuk setiap kolom, saya telah membuat skrip sql untuk mencari di tabel untuk nilai bukan nol untuk kolom yang dipilih. Untuk baris yang memenuhi kriteria, saya mengambil ID uniknya dan memasukkannya ke tabel temp, dan pekerjaan ini saya gunakan untuk semua kolom.

Pada akhirnya hanya ID yang menghitung seperti jumlah kolom yang merupakan hasil Anda, karena hanya baris yang memiliki jumlah tampilan yang identik seperti jumlah kolom dalam tabel yang dapat berupa baris dengan semua nilai bukan nol di semua kolom.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Poin kueri dalam radius tertentu di MySQL

  2. Kolom Kesalahan Posting Fatal AJAX Tidak Bisa Null

  3. Klasemen turnamen multi-acara

  4. Bagaimana mengubah Batas secara dinamis di mySQL

  5. Mysql pilih baris ketika nilai kolom berubah