mysql in子句问题请教

问题描述

mysql in子句问题请教

1、select role_auth_ids from test_role where role_name='经理' 的执行结果:
+------------+
role_auth_ids
+------------+
1,2,3

2、select auth_name from test_auth where auth_id in (1,2,3)的执行结果:
+------+
auth_name
+------+
商品管理
商品添加
商品编辑

但是,将1、2条语句合并后,即select auth_name from test_auth where auth_id in (select role_auth_ids from test_role where role_name='经理'),执行结果只有一条数据,也就是只有商品管理一个数据。这是why?

SELECT auth_name FROM test_auth WHERE auth_id IN (SELECT replace(concat('''',role_auth_ids,''''),',',''',''') FROM test_role WHERE role_name = '经理 ') 给in子句加上单引号也不行..................

请教各位大神我该如何才能从通过test_role中role_auth_ids查询出对应的test_auth表中的auth_name呢?

解决方案

你将你的test_auth 和 test_role 表的关于这几个字段的具体数据列检索结果列一下吧

解决方案二:

查询语句好乱。那几个id是varchar2类型的,需要每个id上都用单引号包含。应该这样 in ('1','2','3')

解决方案三:

检查 select role_auth_ids from test_role where role_name='经理' 这条语句的查询结果

解决方案四:

 用find_in_set
 select auth_name from test_auth where find_in_set(auth_id,(select role_auth_ids from test_role where role_name='经理'))

解决方案五:

看下你建的表中的字段的数据类型是否一致 sql应该是没有问题的

解决方案六:

'经理 ' 经理两字后有空白字符串

时间: 2024-08-01 23:38:50

mysql in子句问题请教的相关文章

MYSQL查询。。请教大神~~~

问题描述 MYSQL查询..请教大神~~~ 解决方案 http://www.cnblogs.com/luowende2012/archive/2012/07/19/2599436.html 解决方案二: select a1 ,(select count(*) from 表 where 主岗=t.a1) 主岗次数 ,(select count(*) from 表 where 副岗=t.a1) 副岗次数 ,(select count(*) from 表 where 交易岗=t.a1) 交易岗次数 ,

mysql where 子句执行顺序

问题描述 mysql里面,下面两种where 子句,那种效率高where + 复杂计算的条件 + 能过滤掉大量纪录的条件where + 能过滤掉大量纪录的条件 + 复杂计算的条件 解决方案 解决: where + 能过滤掉大量纪录的条件 + 复杂计算的条件原因: 没有括号就"就近原则"-->能过滤掉大量纪录的条件-->复杂计算的条件

详解MySQL中WHERE子句的用法_Mysql

我们已经看到SQL SELECT命令来从MySQL表获取数据.我们可以使用一个条件子句WHERE子句中筛选出来的结果.使用WHERE子句,我们可以指定一个选择的标准来从表中选择所需的记录.语法: 下面是通用的SQL WHERE子句来获取数据从MySQL表的SELECT命令的语法: SELECT field1, field2,...fieldN table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....    

MySQL中BETWEEN子句的用法详解_Mysql

可以使用IN子句来代替相结合的"大于等于和小于等于"的条件. 要了解BETWEEN 子句考虑的EMPLOYEE_TBL表有以下记录: mysql> SELECT * FROM employee_tbl; +------+------+------------+--------------------+ | id | name | work_date | daily_typing_pages | +------+------+------------+---------------

PHP的MySQL的WHERE子句

PHP的MySQL的WHERE子句 WHERE子句是用来过滤器记录. WHERE子句 WHERE子句是用来提取物只有那些记录,完成指定的标准. 语法 SELECT column_name(s) FROM table_name WHERE column_name operator value 若要了解更多有关SQL ,请访问我们的SQL教程. 为了让PHP来执行上述的声明,我们必须使用mysql_query ( )函数.此功能是用来发送查询或命令的MySQL连接. 例如下面的例子选择所有行从"人&

MySQL的子查询中FROM和EXISTS子句的使用教程_Mysql

FROM 子查询FROM 子句中的子查询 MySQL FROM 子查询是指 FROM 的子句作为子查询语句,主查询再到子查询结果中获取需要的数据.FROM 子查询语法如下: SELECT ... FROM (subquery) AS name ... 子查询会生成一个临时表,由于 FROM 子句中的每个表必须有一个名称,因此 AS name 是必须的.FROM 子查询也称为衍生数据表子查询. FROM 子查询实例 table1: s1 s2 1 5 2 12 3 20 FROM 子查询 SQL

mysql配置远程访问数据库

问题描述 mysql配置远程访问数据库 请教大神mysql该怎么配置才能够让别的计算机连到服务器的mysql?我在服务器搞了一个小时不是1130就是1045错误,百度了,但是很无奈.mysql.user表改过了,没用.grant权限也试过.网上还有一种说法,root账户不能远程访问,不知道是不是?但是我们公司mysql的root账户可以.求解 解决方案 To answer your question, on Windows, the my.cnf file may be called my.in

MYSQL 函数汇总

数值函数: 名字 描述                                                                                                     ABS() 返回数字表达式的绝对值. ACOS() 返回数字表达式的反余弦值.如果值是不在范围-1到1,则返回NULL. ASIN() 返回数字表达式的反正弦.返回NULL,如果值不在范围-1到1 ATAN() 返回数字表达式的反正切. ATAN2() 返回传递给它的两个变量

PHP中ORDER BY子句的详细用法教程_Mysql

我们已经看到SQL SELECT命令来获取数据从MySQL表.当选择行,MySQL服务器是自由返回,除非指示说如何排序结果否则它会自由返回.指定需要结果集增加一个ORDER BY子句要作为排序依据的列或列名进行排序.语法: SELECT field1, field2,...fieldN table_name1, table_name2... ORDER BY field1, [field2...] [ASC [DESC]] 这里是通用的SQL的SELECT命令的语法,ORDER BY子句从MyS