3

我正在做一个项目,但遇到了一个查询,我想在该查询中获取值为“否”的表的特定列名。

我有一个名称订阅表,它有四个字段;id( integer)、email( varchar)、sms( varchar)、phone( varchar) 和 my email、sms 和 phone 字段的值为“是”或“否”。

现在我想只检索那些值为'no'的列的名称。我想在 mysql 中执行这个查询。

我尝试了以下查询,只要出现“no” ,它就会返回完整的行:

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

就像我现在有这两个 roes 一样,我想选择 value='no' 和 id=1 的列名

就像我现在有这两行一样,我想选择 value='no' 和 id=1 的列名

4

3 回答 3

2

使用以下案例陈述来做一些便宜又愉快的事情怎么样:

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

如果我的问题是正确的,我认为以下Query可能有效

SELECT * 
FROM test.subscription 
WHERE 1=1
and 
(email = 'no'
or
email = 'no'
or 
sms = 'no'
)
and id=(your values)
于 2013-05-21T08:12:24.827 回答
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 回答