【发布时间】:2015-01-22 13:06:42
【问题描述】:
这个案例类似于:S.O Question; mySQL returns all rows when field=0,接受的答案是一个非常简单的技巧,用单引号包围零
来自:
SELECT * FROM table WHERE email=0
到:
SELECT * FROM table WHERE email='0'
但是,我的情况略有不同,因为我的查询类似于:
SELECT * FROM table WHERE email=(
SELECT my_column_value FROM myTable WHERE my_column_value=0 AND user_id =15 LIMIT 1 )
从某种意义上说,就像简单地说:SELECT * FROM table WHERE email=0,但现在是Second Query。
请注意:必须使用SECOND QUERY。
当我尝试时:SELECT * FROM table WHERE email='( SELECT my_column_value FROM myTable WHERE my_column_value=0 LIMIT 1 )' (注意第二个查询中的单引号)
MySql 尖叫 Errors near '(.
如何做到这一点
任何建议都非常荣幸
EDIT1:查询的视觉视角
在此处查看 STEN_TB:http://snag.gy/Rq8dq.jpg
现在,主要目标是获得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' )
Second Query 的结果可以是任何数字,包括 ZERO。
来自>=1 的任何数字都有效并从sten_h 返回单个对应 值。只有=0 不起作用,它返回所有行
这就是问题所在。
对此的正确答案或解决方案
以防万一有人最终陷入这种悖论,接受答案就可以了。
见STEN_TB:http://snag.gy/Rq8dq.jpg
在此处查看所需的Query 结果:http://snag.gy/wa4yA.jpg
【问题讨论】:
-
试过
IN仍然返回所有行 -
您只需要在值周围加上引号:WHERE my_column_value='0'
-
@DariusX。这就是我在问题中所说的......现在的问题,当它是第二个查询的结果时如何处理零??
-
@UniversalGrasp,尝试从 mytable 中选择 cast(my_column as varchar(1))
-
我收到错误:#1064 -您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的 'varchar(1)) FROM
for_print_stens_tbWHEREfor_print_stens_student_id' 附近使用正确的语法`