我有的是( 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 |
+----------+------+-----+
說真的,我不太懂你的需求。
你是想要用「相同的type,不同的name 才show出來」
但卻是去 IN num ????
依照你的條件,完全不需要去判斷 num 啊??
所以???你到底要啥啦!!
回來正題。其實如果造你的問題來看。使用 GROUP BY就行了。
只是現在有點搞不清楚你的問題。沒辦法給你正確寫法。
以下是我想要的結果,相同的type,不同的name 才show出來
以結果來看,不需要使用 INSELECT * FROM Table Name where Type='er'
只看output
猜想
select * from table name
group by num,name,type
having count(type)>1
或許是你要的
以下是我想要的結果,相同的type,不同的name 才show出來
加distinct
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)