2013-02-21 40 views
0

我有一個MySQL數據庫的一些記錄。我想擁有這樣的最後兩條記錄:搜索與LIKE %% Mysql爲最後兩個不同的值

注意:id字段是自動增量,但我的記錄可能不會跟隨對方。它看起來像這樣:

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

我想有42 KXXXXXXX和42 BXXXXXX的最後一條記錄將它傳遞給一個PHP變量。

我嘗試這樣做:

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.不要使用 「和」 頂之間。我認爲你應該使用UNION獲得最後的42-KX和42KB – sanj 2013-02-21 09:00:38

+0

而如果只有42-KX會怎麼樣?如何讓他們進入php變量來檢查他們是否存在? – user1632298 2013-02-21 09:22:59

+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 2013-02-21 09:42:43

回答

2

你用還是不用像這樣

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

或MID和在這樣

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

MID(myvalue, 4, 1)從位置4創建您的myvalue字段的子字符串,1個字符!

其easer閱讀和更好地擴大

+0

你不需要領先的'%'。 – 2013-02-21 08:58:38

+0

@SalmanA你是對的!謝謝 – silly 2013-02-21 09:02:00

1

替換您ANDOR

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