2

単一の列からいくつかの条件で 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

4 に答える 4

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'

2 つのポジションのようなものは必要ありません。実行率が % 向上します。

于 2012-04-17T02:29:46.587 に答える
1

単純なテーブル (StackOverFlow Test テーブルに最適) を作成し、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'|
于 2012-04-17T03:14:19.680 に答える
0
SELECT RIGHT(productID), 2)
                      ^---extra bracket

抽出する文字数を指定する前に、関数を終了しています。

于 2012-04-17T02:18:57.537 に答える
0

これは、RIGHT関数呼び出しのエラーが原因で、括弧の位置が間違っています。SELECT ステートメントを次のように変更します。

SELECT RIGHT(productID, 2) 
于 2012-04-17T02:19:48.550 に答える