MySQL从第二个Select查询返回字段=0时的所有行
本案例类似于:S.O问题,被接受的答案是一个非常简单的技巧,用单引号将零四舍五入 发件人: 致: 但是,我的情况略有不同,因为我的查询类似于: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,
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”附近使用的正确语法!!。。。。当我尝试转换时它起作用了。。。,。。。戏法再次感谢你。认可的