mysql选择2个不同的子串,单个WHERE来自1列

时间:2012-04-17 02:09:02

标签: mysql sql

我试图从单列中的几个条件从sql中提取数据 我怎么能让这个工作?

SELECT RIGHT(productID, 2) AS 'a', SUBSTRING(productID,1,2) AS 'b', productID 
FROM products 
WHERE `group`='$one' 
  AND `a` LIKE 'AA%' 
  AND `b` LIKE '$two'

我正在尝试获取行的前2个字母和同一行中的最后2个字母以及检查group = $ one但是会出现此错误

    Unknown column 'b' in 'where clause'

4 个答案:

答案 0 :(得分:1)

SELECT RIGHT(productID, 2) AS 'a', SUBSTRING(productID,1,2) AS 'b', productID 
FROM products 
WHERE `group`='$one' 
GROUP BY productID
HAVING
  a = 'AA' 
  and b LIKE '$two'

不需要它是两个位置%增加执行。

答案 1 :(得分:1)

我创建了一个简单的表(sosst for StackOverFlow Test table)并为其添加了一个名为col1的VARCHAR列。下面的代码对我有用。

SELECT RIGHT(col1, 2) AS a, SUBSTRING(col1,1,2) AS b, col1 as col FROM sotest  Having a like 'in%' and b like 'te%'

回报如下:

|  a |  b  |     col      |
|'in'| 'te'| 'test_jermin'|

答案 2 :(得分:0)

SELECT RIGHT(productID), 2)
                      ^---extra bracket

在指定要提取的字符数之前,您将终止该功能。

答案 3 :(得分:0)

这是因为RIGHT函数调用中的错误,您的括号错位。将SELECT语句更改为:

SELECT RIGHT(productID, 2)