iT邦幫忙

0

SQL 一個資料表LIKE 多個條件 ?

sql

網上查了很多還是沒查到我要的 , 下面查一個可以執行

$sql_query = "SELECT * FROM user WHERE address LIKE '%ABC%' AND address1 LIKE '%ABC%'";

但我要查多個 , 查到最後只想到下面這樣但還是不行

$sql_query = "SELECT * FROM user WHERE address LIKE ('%ABC%','%DEF%','%GHI%') AND address1 LIKE ('%ABC%','%DEF%','%GHI%')";
看更多先前的討論...收起先前的討論...
pcw iT邦研究生 4 級 ‧ 2018-09-23 11:42:50 檢舉
少了WHERE關鍵字
alex9453 iT邦新手 3 級 ‧ 2018-09-23 12:13:12 檢舉
第一個沒用 copy 才少打 , 謝謝指教
dog830228 iT邦研究生 4 級 ‧ 2018-09-23 16:37:55 檢舉
提示:
使用 `LIKE` + `OR`
dog830228 iT邦研究生 4 級 ‧ 2018-09-23 16:37:56 檢舉
提示:
使用 `LIKE` + `OR`
看來樓主需要把 SQL 修好學好,這些都是基本語法,連資料分析跟探勘都還沒有
如果樓主是為了那份工作,也更應該如此,
不是來這邊問一下哪裡錯了,就能夠幫主樓主得到那份工作

2 個回答

0
pcw
iT邦研究生 4 級 ‧ 2018-09-23 11:39:42
SELECT * FROM user WHERE address LIKE ('%ABC%','%DEF%','%GHI%')

可以改為

SELECT * FROM user WHERE address LIKE '%ABC%'
UNION
SELECT * FROM user WHERE address LIKE '%DEF%'
UNION
SELECT * FROM user WHERE address LIKE '%GHI%'

再去篩 address1的條件

看更多先前的回應...收起先前的回應...
froce iT邦高手 1 級 ‧ 2018-09-23 12:02:08 檢舉

不建議教他,這傢伙只是來釣code的。

alex9453 iT邦新手 3 級 ‧ 2018-09-23 12:10:22 檢舉

我是來請教方向與方法 , 知道方向方法比較重要 , 以後都用得上 , 只是要到了 code , 下次 code 又不一樣 , 那我不是也沒學到 , 難不成幾千條 code 都一個一個問

小魚 iT邦高手 1 級 ‧ 2018-09-23 12:13:56 檢舉

釣了Code也是沒有用...

alex9453 iT邦新手 3 級 ‧ 2018-09-23 12:37:49 檢舉

PCW 請問是這樣嗎 ? 但不行

"SELECT * FROM user WHERE address LIKE '%ABC%' 
UNION 
SELECT * FROM user WHERE address LIKE '%DEF%' 
UNION 
SELECT * FROM user WHERE address LIKE '%GHI%' 
AND 
SELECT * FROM user WHERE address1 LIKE '%ABC%' 
UNION 
SELECT * FROM user WHERE address1 LIKE '%DEF%' 
UNION 
SELECT * FROM user WHERE address1 LIKE '%GHI%'";
pcw iT邦研究生 4 級 ‧ 2018-09-23 17:29:28 檢舉

當然不行,因為AND不是這樣用的。

AND 要改UNION

pcw iT邦研究生 4 級 ‧ 2018-09-26 16:52:15 檢舉

改成UNION應該也達不到OP的要求。

alex9453 iT邦新手 3 級 ‧ 2018-10-02 23:15:21 檢舉

謝謝各位 , 改成這樣可以了

 $sql_query="SELECT *,MIN(time) FROM `fruit` WHERE time LIKE '0%' AND(afc LIKE '%芭樂%')AND (afc1 LIKE '%蘋果%' OR afc1 LIKE '%葡萄%' OR afc1 LIKE '%龍眼%')";
alex9453 iT邦新手 3 級 ‧ 2018-10-02 23:21:08 檢舉

但是當取到 afc1 值後 , 要再成為下一 row 的 afc , 這樣就可以一直排下去 , 到所有 row 完成 , 還要再研究看看

0
純真的人
iT邦高手 3 級 ‧ 2018-09-23 19:28:54

不知道這是否你要的...

SELECT * 
FROM user 
WHERE (1=2
	or address LIKE '%ABC%'
	or address LIKE '%DEF%'
	or address LIKE '%GHI%' 
)
AND (1=2
	or address1 LIKE '%ABC%'
	or address1 LIKE '%DEF%'
	or address1 LIKE '%GHI%'
);
看更多先前的回應...收起先前的回應...
alex9453 iT邦新手 3 級 ‧ 2018-09-24 00:04:15 檢舉

謝謝 正確是這樣 感恩 , 請問 1=2 的意思是什麼 ?

dog830228 iT邦研究生 4 級 ‧ 2018-09-24 00:14:25 檢舉

1=2 應該可以省略
只要使用 address like 'xxx' or address like 'ooo'

dog830228 iT邦研究生 4 級 ‧ 2018-09-24 00:15:29 檢舉

1=2 代表不成立 這邊存真大大可能只是想強調可以使用or+ like 吧

alex9453 iT邦新手 3 級 ‧ 2018-09-24 05:22:58 檢舉

dog830228 你是說這樣嗎 ? 不行執行 , 沒關係有 1=2 也沒差 , 請問如果要再加篩選條件 , 如 time LIKE '%9%' 要加在哪 , 我試過好幾個方法 , 下面是其中一個 , 還是不行

SELECT * 
FROM user 
WHERE (1=2
	or address LIKE '%ABC%' or time LIKE '%9%'
	or address LIKE '%DEF%' or time LIKE '%9%'
	or address LIKE '%GHI%' or time LIKE '%9%'
)
AND (1=2
	or address1 LIKE '%ABC%' or time LIKE '%9%'
	or address1 LIKE '%DEF%' or time LIKE '%9%'
	or address1 LIKE '%GHI%' or time LIKE '%9%'
);
dog830228 iT邦研究生 4 級 ‧ 2018-09-24 05:40:58 檢舉

我的意思是這樣

WHERE (   address1 LIKE '%ABC%'
	or address1 LIKE '%DEF%'
	or address1 LIKE '%GHI%'
)

alex9453
1=2是我寫程式的習慣用法..哈(用在多重搜尋條件0.0)
正確是跟dog830228一樣的~

alex9453 iT邦新手 3 級 ‧ 2018-09-24 08:52:41 檢舉

dog830228 了解 , 那如果再多一個篩選條件 time LIKE '%8%' , 我剛試過如下不行

$sql_query="SELECT * 
FROM user 
WHERE ( address LIKE '%ABC%' or time LIKE '%8%' 
) 
WHERE ( address1 LIKE '%ABC%' or time LIKE '%8%'
)";
dog830228 iT邦研究生 4 級 ‧ 2018-09-24 19:07:57 檢舉

ㄜ~ 你不能用兩個where 而且 time 欄位 我建議用撇號 來包含.

SELECT * 
FROM user 
WHERE  
   address LIKE '%ABC%' or `time` LIKE '%8%' 
AND
  address1 LIKE '%ABC%' or `time` LIKE '%8%'
)
alex9453 iT邦新手 3 級 ‧ 2018-10-02 23:17:06 檢舉

謝謝各位 , 研究語法後 , 改成這樣可以了

$sql_query="SELECT *,MIN(time) FROM `fruit` WHERE time LIKE '0%' AND(afc LIKE '%芭樂%')AND (afc1 LIKE '%蘋果%' OR afc1 LIKE '%葡萄%' OR afc1 LIKE '%龍眼%')";

我要發表回答

立即登入回答