iT邦幫忙

1

php sql where in 寫法問題。

  • 分享至 

  • xImage

我有的是( 1,2 ),我用了in之後不懂怎樣做才做到我想要的效果。

$sql = SELECT * FROM Table Name where num in (1,2)
$db = $this->app->alt->db;
$result = $db->query($sql)->fetchAll();

以下是我想要的結果,相同的type,不同的name 才show出來
+----------+-------+-------+
| num | name |type |
+----------+-------+-------+
| 1 | abc | er |
| 1 | abc | er |
| 2 | qwer | er |
| 2 | qwer | ty |
| 4 | der | ui |
| 5 | nerr | io |
+----------+-------+-------+
output

+----------+------+-----+
| num | name |type |
+----------+------+-----+
| 1 | abc | er |
| 1 | abc | er |
| 2 | qwer | er |
+----------+------+-----+

Ander iT邦新手 5 級 ‧ 2022-08-31 20:13:42 檢舉
單純看你的 input、output 我猜你可能想要 select * from Table where num in (1,2) and type = 'er';
where in 是指說在這個括弧內的值有跟 欄位相符 就撈出來
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
3

說真的,我不太懂你的需求。
你是想要用「相同的type,不同的name 才show出來」
但卻是去 IN num ????
依照你的條件,完全不需要去判斷 num 啊??

所以???你到底要啥啦!!

回來正題。其實如果造你的問題來看。使用 GROUP BY就行了。
只是現在有點搞不清楚你的問題。沒辦法給你正確寫法。

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-09-01 08:48:33

以下是我想要的結果,相同的type,不同的name 才show出來

以結果來看,不需要使用 IN
SELECT * FROM Table Name where Type='er'

0
柳丁柚
iT邦新手 1 級 ‧ 2022-09-01 09:01:12

只看output
猜想

select * from table name 
group by num,name,type
having count(type)>1

或許是你要的

以下是我想要的結果,相同的type,不同的name 才show出來

加distinct

1
rogeryao
iT邦超人 8 級 ‧ 2022-09-01 09:52:09
CREATE TABLE XX (
num  int,
name varchar(10),
type varchar(10));

INSERT INTO XX Values
(1,'abc','er'),
(1,'abc','er'),
(2,'qwer','er'),
(2,'qwer','ty'),
(4,'der','ui'),
(5,'nerr','io');
-- 解法一
SELECT *
FROM XX
WHERE type IN (
SELECT type
FROM XX
GROUP BY type
HAVING COUNT(type) > 1)
-- 解法二
SELECT XX.*
FROM XX
INNER JOIN (
SELECT type
FROM XX
GROUP BY type
HAVING COUNT(type) > 1) AS YY ON YY.type = XX.type
-- 解法三
SELECT *
FROM XX
WHERE EXISTS (
SELECT YY.type
FROM XX AS YY
WHERE YY.type = XX.type
GROUP BY YY.type
HAVING COUNT(YY.type) > 1)

Demo

我要發表回答

立即登入回答