3

私はプロジェクトに取り組んでおり、値が「いいえ」のテーブルの特定の列名を取得したいクエリに行き詰まりました。

サブスクリプションという名前のテーブルがあり、4 つのフィールドがあります。id( integer)、email( varchar)、sms( varchar)、phone( varchar)、および my email, sms and phone フィールドの値は「yes」または「no」です。

ここで、値'no'を持つ列のみの名前を取得したいと思います。このクエリをmysqlで実行したい。

次のクエリを試してみましたが、「no」が 1 つでもある場合はどこでも完全な行が返されます。

SELECT * FROM test.subscription WHERE 'no' IN (email,sms,phone);

これら2つのroesがあるように、value = 'no'およびid = 1の列名を選択したい

これらの 2 つの行があるように、value='no' および id=1 の列名を選択したい

4

3 に答える 3

2

次のような case ステートメントを使用して、安価で陽気なものはどうでしょうか。

SELECT ID, 'ColName' = CASE
    WHEN email = 'no' THEN 'email'
    END, 
    'ColName2' = CASE
    WHEN sms = 'no' THEN 'sms'
    END, 
    'ColName3' = CASE
    WHEN phone = 'no' THEN 'phone'
    END
FROM subscription
where ID = 2
于 2013-05-21T08:25:48.227 に答える
0

権限が少ないため、これをコメントにすることはできませんが、テーブルに保持されている値 (任意の列である可能性があります) を検索する場合は、このSO 投稿を確認してください。

同じ投稿のコードを使用 -

DECLARE @Results TABLE(ColumnName nvarchar(370), ColumnValue nvarchar(3630))

DECLARE @SearchStr nvarchar(100)

DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
SET  @TableName = 'no'
SET @SearchStr2 = QUOTENAME('%' + 'no' + '%','''')

    SET @ColumnName = ''
    SET @TableName = '[test].[dbo].[subscription]'

    WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
    BEGIN
        SET @ColumnName =
        (
            SELECT MIN(QUOTENAME(COLUMN_NAME))
            FROM    INFORMATION_SCHEMA.COLUMNS
            WHERE       TABLE_SCHEMA    = PARSENAME(@TableName, 2)
                AND TABLE_NAME  = PARSENAME(@TableName, 1)
                AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
                AND QUOTENAME(COLUMN_NAME) > @ColumnName
        )

        IF @ColumnName IS NOT NULL
        BEGIN
            INSERT INTO @Results
            EXEC
            (
                'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) 
                FROM ' + @TableName + ' (NOLOCK) ' +
                ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
            )
        END
    END 


SELECT ColumnName, ColumnValue FROM @Results
于 2013-05-21T07:38:19.853 に答える