Mysql 选择具有非空值列的记录
我陷入了这个问题。如果我有这样一张桌子:Mysql 选择具有非空值列的记录,mysql,sql,Mysql,Sql,我陷入了这个问题。如果我有这样一张桌子: ---------------------------------------- ID | field1 | field2 | field3| field4 | ---------------------------------------- 1 | 1 | 0 | 1 | 0 | ---------------------------------------- 2 | 0 | 1 |
----------------------------------------
ID | field1 | field2 | field3| field4 |
----------------------------------------
1 | 1 | 0 | 1 | 0 |
----------------------------------------
2 | 0 | 1 | 0 | 1 |
----------------------------------------
我想写一个查询,选择一个只包含等于等于1的列的记录
1.其中ID=1
---------------------
ID | field1 | field3
----------------------
1 | 1 | 1
二,。其中ID=2
---------------------
ID | field2 | field4
----------------------
2 | 1 | 1
你们能给我一个建议吗,怎么做
非常感谢您花时间阅读我的问题。您必须使用WHERE条件来选择值。将表名视为表1
SELECT * FROM Table1 WHERE ID = 1
若要从多个ID中选择,可以在子句中使用
SELECT * FROM Table1 WHERE ID IN (1,2)
如果只需要字段1、字段3,则只需在SELECT查询中提及它们。您不需要*,它对应于所有字段
SELECT Field1, Field3 FROM Table1 WHERE ID = 1
必须使用WHERE条件来选择值。将表名视为表1
SELECT * FROM Table1 WHERE ID = 1
若要从多个ID中选择,可以在子句中使用
SELECT * FROM Table1 WHERE ID IN (1,2)
如果只需要字段1、字段3,则只需在SELECT查询中提及它们。您不需要*,它对应于所有字段
SELECT Field1, Field3 FROM Table1 WHERE ID = 1
不,SQL不这样做,在运行时有条件地返回列 要返回的列集是在解析和准备SQL语句时确定的。它不能在运行时动态更改 要获得如图所示的结果,我们需要两个不同的查询
SELECT t.id, t.field1, t.field3
FROM mytable t
WHERE ...
及
我们可以为SELECT列表中的表达式提供别名,但同样,这些别名必须在SQL文本中指定;这些不能在执行时更改
SELECT t.id, 1 AS field2, 1 AS field4
FROM mytable t
WHERE ...
但是我们仍然需要不同的SQL文本来返回field1和field3
似乎有2^4(1+4+6+4+1)个字段1..4的可能组合可以填充。总共有16个可能的选择列表 我们可以运行一个预查询,找出应该返回哪个fieldN,并使用该查询的结果来表示第二个查询的文本
但是这样做所需要的繁琐工作似乎没有必要。不,SQL没有这样做,在运行时有条件地返回列 要返回的列集是在解析和准备SQL语句时确定的。它不能在运行时动态更改 要获得如图所示的结果,我们需要两个不同的查询
SELECT t.id, t.field1, t.field3
FROM mytable t
WHERE ...
及
我们可以为SELECT列表中的表达式提供别名,但同样,这些别名必须在SQL文本中指定;这些不能在执行时更改
SELECT t.id, 1 AS field2, 1 AS field4
FROM mytable t
WHERE ...
但是我们仍然需要不同的SQL文本来返回field1和field3
似乎有2^4(1+4+6+4+1)个字段1..4的可能组合可以填充。总共有16个可能的选择列表 我们可以运行一个预查询,找出应该返回哪个fieldN,并使用该查询的结果来表示第二个查询的文本
但是,这样做的繁琐似乎没有必要。非常感谢,但是如果使用“从表1中选择*,其中ID=1”返回ID=1的所有列,我想要的预期结果只是字段1和字段3谢谢,很抱歉没有明确的要求,预期结果是显示哪个列的值为1,您必须相应地对相应列应用WHERE条件。如果是字段1,将WHERE条件应用为
WHERE Field1=1
谢谢,但我认为这是不正确的,如果我将WHERE Field1=1添加到查询中,它将显示ID=1、字段1=1、字段2=0、字段3=1、字段4=0,但我想要的结果只是字段1和字段3,因为它们的值=1。它将显示带有列的ID,列的值为1,从表1中选择字段1、字段3,其中ID=1和(字段1=1和字段3=1)。请检查此项非常感谢,但如果使用“SELECT*FROM Table1 WHERE ID=1”返回ID=1的所有列,我想要的预期结果只是字段1和字段3谢谢,很抱歉没有明确的要求,预期结果是显示哪个列的值为1,您必须相应地对相应列应用WHERE条件。如果是字段1,将WHERE条件应用为WHERE Field1=1
谢谢,但我认为这是不正确的,如果我将WHERE Field1=1添加到查询中,它将显示ID=1、字段1=1、字段2=0、字段3=1、字段4=0,但我想要的结果只是字段1和字段3,因为它们的值=1。它将显示带有列的ID,列的值为1,从表1中选择字段1、字段3,其中ID=1和(字段1=1和字段3=1)。请检查这类问题是设计不良的症状这类问题是设计不良的症状谢谢,这样muchIt就可以创建一个查询,返回两列,一列带有id
值,另一列作为字符串,包含逗号(或其他分隔符)分隔列表。。。e、 g.“字段1,字段3”
。我们可以将其作为字符串值返回,一个列,使用我们指定的任何别名,例如foo
作为列标题。感谢您,这样就可以创建一个查询,返回两列,一列带有id
值,另一列作为字符串,其中包含逗号(或其他分隔符)分离列表。。。e、 g.“字段1,字段3”
。我们可以将其作为字符串值、单个列返回,并使用我们指定为列标题的任何别名,例如foo
。