iT邦幫忙

0

想知道到底在AA表內,可否直接顯示重覆資料

請問幾個SQL語法問題,使用該「語法一」即可找到大於1的資料,假設找出2筆資料

語法一:select BECM from AA group by BECM having count(BECM) > 1

但我找完資料後,我又要下以下指令,才可以知道BECM=6的table詳細內容為何~

select * from AA where BECM = 6

我其實是希望在AA該欄位內,下查詢即可以知道BECM該欄位重覆的資料直接顯示出來讓我知道

以我目前的理解,似乎只能分斷試去下指令瞭解,請問各位前輩有更好的方法嗎?

不知這樣是否有將問題描述清楚,若無,請再跟我說,我會儘快補充,謝謝!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
海綿寶寶
iT邦大神 1 級 ‧ 2017-08-01 17:47:57

SQL Fiddle

CREATE TABLE AA
    (`NAME` varchar(9), `BECM` int)
;
    
INSERT INTO AA
    (`NAME`, `BECM`)
VALUES
    ('Ada', 6),
    ('Lisa', 6),
    ('Jenny', 6),
    ('Jack', 3),
    ('Joan', 2),
    ('Jeniffer', 1),
    ('Charlotte', 8),
    ('Daisy', 8)
;
SELECT * FROM AA
  WHERE BECM IN
  (SELECT BECM FROM AA
         GROUP BY BECM
        HAVING COUNT(*) > 1)
0
做工仔人!
iT邦大師 1 級 ‧ 2017-08-01 17:49:58

select * from AA where BECM in (select BECM from AA group by BECM having count(BECM) > 1)
ORDER BY BECM

0
poiu124pat
iT邦新手 2 級 ‧ 2017-09-02 10:34:05

上面的寫法也可以,也可以用內部聯結
select *
from aa,
(select form aa group by BECM having count(BECM)>1)aaCount
where aa.BECM = aaCount.BECM and
........... <==你需要的判斷式

如果count後的值可以判斷只有唯一的話,也可以直接用MAX or MIN等count函數
ex..
select max(name),max(BECM),count(BECM)....
form aa
group by BECM
having count(BECM)>1

我剛剛那個內部連結的寫法,如果你有把BECM設好index的話,效率應該還算不錯

klm2242 iT邦研究生 1 級 ‧ 2017-09-15 17:42:26 檢舉

謝謝

我要發表回答

立即登入回答