MySQL从第二个Select查询返回字段=0时的所有行

MySQL从第二个Select查询返回字段=0时的所有行,mysql,select,Mysql,Select,本案例类似于:S.O问题,被接受的答案是一个非常简单的技巧,用单引号将零四舍五入 发件人: 致: 但是,我的情况略有不同,因为我的查询类似于: SELECT * FROM table WHERE email=( SELECT my_column_value FROM myTable WHERE my_column_value=0 AND user_id =15 LIMIT 1 ) ... email = (SELECT CONVERT(my_column_value,

本案例类似于:S.O问题,被接受的答案是一个非常简单的技巧,用单引号将零四舍五入

发件人:

致:

但是,我的情况略有不同,因为我的查询类似于:

   SELECT * FROM table WHERE email=( 
         SELECT my_column_value FROM myTable WHERE my_column_value=0 AND user_id =15 LIMIT 1 )
... email = (SELECT CONVERT(my_column_value,CHAR(255)) FROM myTable WHERE ...
从某种意义上讲,这就像简单地说:从email=0的表中选择*,但现在需要第二个查询

请注意:我必须使用第二个查询

当我尝试:SELECT*FROM table WHERE='SELECT my_column_value=0 LIMIT 1'时,请注意第二个查询中的单引号

MySql在“错误”附近尖叫

如何做到这一点

任何建议都是非常荣幸的

EDIT1:用于查询的可视透视图

请参见此处的STEN_TB:

现在,主要的目标是得到一个sten_h,其中rawscore_h=0

当前查询作为一个整体

SELECT sten_h
                FROM sten_tb
                WHERE rawscore_h =  (
                SELECT `for_print_stens_rowscore`
                FROM `for_print_stens_tb`
                WHERE `for_print_stens_student_id` =3
                AND `for_print_stens_factor_name` = 'Factor H' )
第二个查询的结果可以是任何数字,包括零

>=1中的任何数字都起作用,并从sten_h返回一个对应的值。Only=0不起作用,它返回所有行

这就是问题所在

此问题的正确答案或解决方案 万一有人最终陷入这一悖论,公认的答案就是一切

见STEN_TB:


请参见此处所需的查询结果:

我认为您的问题在于隐式数据类型转换。您可以显式地进行这些数据类型转换,以获得控制权

将文字0用单引号括起来的技巧,使文字成为字符串文字,而不是数字

在更一般的情况下,可以使用CAST或CONVERT函数显式指定数据类型转换。您可以在需要的任何位置使用表达式代替列名

例如,要获取my_column_value返回的值以匹配电子邮件列的数据类型,假设电子邮件是字符类型,类似于:

   SELECT * FROM table WHERE email=( 
         SELECT my_column_value FROM myTable WHERE my_column_value=0 AND user_id =15 LIMIT 1 )
... email = (SELECT CONVERT(my_column_value,CHAR(255)) FROM myTable WHERE ...
或者,要将文本整数值设置为字符串值,请执行以下操作:

 ... FROM myTable WHERE my_column_value = CONVERT(0,CHAR(30)) ...

如果email和my_column_value只是表示true或false,那么它们几乎肯定都是BIT NOT NULL或模式用于布尔值的其他两个值类型。您的ORM可能会使用特定的ORM。铸造通常是由于设计拙劣而造成的

如果它应该是一个特定的用户,那么就不应该使用LIMIT,因为表是无序的,并且不会返回特定的用户。在你的问题中解释你的查询应该返回什么,包括你所说的15的确切含义


拥有所有这些类似的栏目是糟糕的设计:rawscore_a、sten_a、rawscore_b、sten_b等等。使用一个包含两列的表:rawscore,sten。

tryin仍然返回所有行您只需要在以下值周围加引号:WHERE my_column_value='0'@DariusX。这就是我在问题中说的。。。现在的问题是,当零是第二次查询的结果时,如何处理它???@UniversalGrass,请尝试从mytableI get ERROR中选择castmy_列作为varchar1:1064-您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解可在第4行“极好!!……”中使用的“varchar1 FROM for_print_stens_tb WHERE for_print_stens_student_id”附近使用的正确语法!!。。。。当我尝试转换时它起作用了。。。,。。。戏法再次感谢你。认可的