2013-02-21 2 views
0

일부 레코드가있는 mysql 데이터베이스가 있습니다. 이 종류의 마지막 두 레코드를 갖고 싶습니다.LIKE %%와 마지막으로 다른 값이 2 개인 Mysql을 검색하십시오.

참고 : id 필드는 자동 증가이지만 내 레코드는 서로 따라 올 수 없습니다. 그것은 다음과 같습니다

ID MYVALUE 
1 42-K0000001 
2 42-K0000002 
3 42-B0000001 
4 42-B0000002 

그리고 PHP는 변수에 전달하기 위해 42 KXXXXXXX 및 42 BXXXXXX의 마지막 기록을 갖고 싶어.

나는이 시도 :

mysql_query("SELECT myvalue from mydatabase WHERE myvalue LIKE %42-K% and myvalue LIKE %42-B% ORDER BY id DESC"); 

윌이 작품 :

SELECT myvalue 
    FROM mydatabase 
    WHERE myvalue LIKE "k%" 
    ORDER BY id DESC 
    LIMIT x 
UNION 
SELECT myvalue 
    FROM mydatabase 
    WHERE myvalue 
    LIKE "b%" 
    ORDER BY id DESC 
    LIMIT x 
+0

1. 좋아하는 사이에 사용 "과"하지 않습니다. 나는 마지막 42-KX와 42KB를 얻기 위해 UNION을 사용해야한다고 생각한다. – sanj

+0

그리고 42-KX 만 있다면? PHP 변수가 존재하는지 여부를 확인하기 위해 PHP 변수로 가져 오는 방법은 무엇입니까? – user1632298

+0

시도해보십시오. $ kx = $ kb = null; $ result = mysql_query ($ YourSqlHere); 동안 ($ 행 = mysql_fetch_assoc ($ 결과)) { \t (SUBSTR ($ 행 [ 'myvalue', 0, 5) == '42 -kx ') \t \t $ KX = $ 행 ['myvalue 경우 ']; \t else \t \t $ kb = $ row [ 'myvalue']; } – sanj

답변

2

당신이 사용할 필요 여부 및이

SELECT * myvalue from mydatabase WHERE myvalue LIKE '42-K%' OR myvalue LIKE '42-B%' ORDER BY id DESC 

또는 MID와 IN

LIKE THIS

같은
SELECT * 
FROM x 
WHERE MID(myvalue, 4, 1) IN ('K', 'B') 
ORDER BY id DESC 

MID(myvalue, 4, 1) 1 문자로 위치 4에서 myvalue 필드의 부분 문자열을 만드십시오!

당신의 AND OR a로 교체

+0

'%'는 필요하지 않습니다. –

+0

@SalmanA 네가 맞아! 고맙습니다 – silly

1

을 확장 읽을 easer 더 나은 :

SELECT * myvalue 
FROM mydatabase 
WHERE myvalue LIKE %42-K% 
    OR myvalue LIKE %42-B% 
ORDER BY id DESC