作者shadowjohn (3WA問題解決專家)
看板PHP
標題Re: [請益] SELECT IN的問題
時間Fri Apr 9 18:05:58 2010
※ 引述《chan15 (ChaN)》之銘言:
: 大家好,我今天table有一個欄位是存放用,組成的字串 例:1,2,3
: 目的是想要用IN來篩選內容,假設欄位名稱叫做xyz好了
: $val = 1;
: $query = sprintf("SELECT * FROM table WHERE %s IN (xyz)", $val);
: 可是我printf $query的結果會變成
: "SELECT * FROM table WHERE 1 IN (xyz)"
: xyz在IN()裡面變成一個字串而非我設定的欄位
: 請問該怎樣才能達到我的目的呢?
參考看看,雖然很笨的方法,但可以動~
mysql> select * from b;
+-------+
| name |
+-------+
| 1,2,3 |
+-------+
1 row in set (0.00 sec)
mysql> select * from c;
+------+-------+
| id | title |
+------+-------+
| 1 | a |
| 1 | b |
| 1 | c |
| 1 | d |
| 2 | d |
| 3 | d |
+------+-------+
6 rows in set (0.00 sec)
mysql> select c.id,c.title from b,c where concat(',',b.name,',') like
concat('%,',c.id,',%');
+------+-------+
| id | title |
+------+-------+
| 1 | a |
| 1 | b |
| 1 | c |
| 1 | d |
| 2 | d |
| 3 | d |
+------+-------+
6 rows in set (0.00 sec)
mysql>
--
3WA訓練家的工作室
宗旨:諸葛單中,謝謝
個人佈弱格 網址:
http://3wa.tw
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.9.79
※ 編輯: shadowjohn 來自: 114.32.9.79 (04/09 18:13)
推 chan15:我後來也是用LIKE解決的,thanks。 04/10 03:04
→ KC73:SELECT id,title FROM c WHERE FIND_IN_SET(id,(SELECT name 04/10 16:01
→ KC73: FROM b)) 沒什麼差別.. 04/10 16:02