mysql将查询结果作为条件查询,以as为结果列where此列条件

在MySQL中,由于查询执行顺序,无法直接在WHERE子句中使用AS创建的别名列。为使用别名作为筛选条件,需要将原查询嵌套,如:SELECT*FROM(SELECT*,SUBSTR(a,10,8)ASbFROMtest)tWHEREt.b=1。否则,必须直接使用原始列名进行过滤。
摘要由CSDN通过智能技术生成

需要以一个查询结果作为查询条件

例如
SELECT  *,SUBSTR(a,10,8) as `b` FROM `test`  where `b`=1  以此sn8作为where条件
但是这样会报错,表示b列不存在

因为mysql底层跑SQL语句时:where 后的筛选条件在先, as b的别名在后。所以机器看到where 后的别名是不认的,所以会报说b不存在。

这个b只是字段a查询结果的一个别名

如果非要用B做筛选条件的话:解决方案:外边再嵌套一层。

SELECT * FROM (
SELECT  *,SUBSTR(a,10,8) as `b` FROM `test`
)t
WHERE t.b='1'   -- 任意的筛选条件

如果不嵌套,只能用A做筛选条件了

### 回答1: 在 MySQL 中,您可以使用 JOIN 语句将三个结果连接在一起。JOIN 语句允许您基于某个条件将两个或多个表中的行连接在一起,从而形成一个大表。 假设您有三个表 A、B 和 C,您想要根据条件 x 连接这些表。您可以使用以下 SQL 查询: SELECT * FROM A JOIN B ON A.x = B.x JOIN C ON A.x = C.x 在此查询中,我们首先将表 A 与表 B 进行连接,并指定连接条件 A.x = B.x。然后,我们将这个中间结果与表 C 进行连接,并再次指定连接条件 A.x = C.x。这将产生一个包含表 A、B 和 C 中所有符合条件 x 的行的结果集。 请注意,您可以根据实际情况更改 SELECT 语句中的名,以仅返回您需要的。 ### 回答2: 在MySQL中写报表时,可以使用JOIN语句将三个结果连接在一起,根据某个条件进行连接。 假设有三个表:表A、表B和表C,每个表中都有一个共同的字段。我们需要按照某个条件将三个表的结果连接起来。 以下是一种常见的用法: SELECT A.column1, B.column2, C.column3 FROM TableA AS A JOIN TableB AS B ON A.common_column = B.common_column JOIN TableC AS C ON B.common_column = C.common_column WHERE A.condition = '条件' 上述语句使用了JOIN语句来连接三个表,使用ON子句指定了连接的条件。首先,连接了表A和表B,通过 A.common_column = B.common_column 条件连接两个表。然后,再将表B和表C连接起来,通过 B.common_column = C.common_column 条件连接两个表。 最后,通过WHERE子句指定了需要满足的条件,这个条件可以是表A中的特定条件,例如 A.condition = '条件'。 通过这样的语句,我们可以根据某个条件将三个表的结果连接在一起,得到我们所需的报表结果。 ### 回答3: 在MySQL中,可以使用JOIN语句将根据某个条件获取的三组结果连接在一起。 首先,假设我们有三个表:表A、表B和表C。我们想根据某个条件将它们连接在一起。以下是一种可能的法: ``` SELECT * FROM tableA AS A JOIN tableB AS B ON A.condition = B.condition JOIN tableC AS C ON A.condition = C.condition ``` 在上面的代码中,“tableA”、“tableB”和“tableC”是表的名称,而“condition”是连接这三个表的条件。 使用上述代码,我们将会得到一个包含三个表连接结果的数据集。连接的方式是根据条件A.condition = B.condition和A.condition = C.condition 进行的。 需要注意的是,上述代码仅是一种示例,具体的条件和连接方式应根据实际业务需求进行调整。另外,如果连接的条件不是等号(=),还可以使用其他操作符(如“>”,“<”等)。 希望以上内容能对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值