作者 主題: mysql 語法︰ 比較同資料表內容並挑出不同處  (閱讀 9077 次)

0 會員 與 1 訪客 正在閱讀本文。

cv86092

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
    • http://mic101.idv.st
例如︰a 資料表如下

NAME               NUMBER
______     ____
michael     0101

lona          0101

simon        0101

leanne       0101

flower        0102

michael      0102

andrew       0102



比較 0101 和 0102 的 name ,有一個 michael 是相同的
能只用一個資料表,然後挑出0102中不重覆的 flower 和 andrew 嗎
謝謝!

oscars80

  • 憂鬱的高中生
  • ***
  • 文章數: 92
    • 檢視個人資料
引述: "cv86092"
例如︰a 資料表如下

NAME               NUMBER
______     ____
michael     0101

lona          0101

simon        0101

leanne       0101

flower        0102

michael      0102

andrew       0102



比較 0101 和 0102 的 name ,有一個 michael 是相同的
能只用一個資料表,然後挑出0102中不重覆的 flower 和 andrew 嗎
謝謝!



感覺上有點像是作業的樣子.... =.=
看不太懂「只能用一個資料表」的意思....

如果是只能用一個「資料表」的話 XD
create table tbl_name select * from a where number=102 and name not in (select name from a where number=101);

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
mysql 語法︰ 比較同資料表內容並挑出不同處
« 回覆 #2 於: 2006-07-03 18:31 »
用 Sub Select 就好了...
引用
SELECT *
FROM `test`
WHERE number = '0102'
AND name NOT
IN (

SELECT name
FROM test
WHERE number = '0101'
)
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

cv86092

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
    • http://mic101.idv.st
mysql 語法︰ 比較同資料表內容並挑出不同處
« 回覆 #3 於: 2006-07-04 11:25 »
我用的是 mysql-4.0.20,難道沒有支援 (sub select )語法嗎 ?
每次都出現 syntax  error ,如果沒支援應該還有別的寫法吧!
謝謝

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
mysql 語法︰ 比較同資料表內容並挑出不同處
« 回覆 #4 於: 2006-07-04 11:43 »
MySQL 要 4.1 以上才支援子查詢...
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

georgesue

  • 憂鬱的高中生
  • ***
  • 文章數: 145
    • 檢視個人資料
mysql 語法︰ 比較同資料表內容並挑出不同處
« 回覆 #5 於: 2006-07-04 11:52 »
引述: "cv86092"
我用的是 mysql-4.0.20,難道沒有支援 (sub select )語法嗎 ?
每次都出現 syntax  error ,如果沒支援應該還有別的寫法吧!
謝謝


升級到4.1 版就可以用 subquery去做
http://dev.mysql.com/doc/refman/4.1/en/subqueries.html
IS與MIS之間的遊走

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
mysql 語法︰ 比較同資料表內容並挑出不同處
« 回覆 #6 於: 2006-07-04 18:51 »
如果你有無法升級的理由...
可以試試看這個...

http://www.databasejournal.com/features/mysql/article.php/10897_3434641_1

不過..建議還是用 mysql 4.1 吧....比較簡單...
(雖然要是你沒搞懂 charset 的話會很麻煩....)
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

micmic3

  • 俺是博士!
  • *****
  • 文章數: 1693
    • 檢視個人資料
mysql 語法︰ 比較同資料表內容並挑出不同處
« 回覆 #7 於: 2006-07-18 14:16 »
SELECT t1.name as t1_name,t1.number as t1_no,test.name as name,test.number as no
FROM `test`  as t1  LEFT JOIN( `test` ) on (t1.name = test.name)
where t1.number !=  test.number  group by t1.name order by t1_no
這樣可以找出兩個都有的給你參考...

Yeh Dan kie

  • 懷疑的國中生
  • **
  • 文章數: 40
    • 檢視個人資料
引述: "cv86092"
例如︰a 資料表如下

NAME               NUMBER
______     ____
michael     0101

lona          0101

simon        0101

leanne       0101

flower        0102

michael      0102

andrew       0102



比較 0101 和 0102 的 name ,有一個 michael 是相同的
能只用一個資料表,然後挑出0102中不重覆的 flower 和 andrew 嗎
謝謝!


代碼: [選擇]

SELECT A1.NAME,A1.NUMBER
FROM A_TABLE AS A1 INNER JOIN A_TABLE AS A2 ON A1.NAME=A2.NAME
WHERE A1.NUMBER='0102'
GROUP BY A1.NAME
HAVING COUNT(A1.NAME)<2;

昨天有貼另外一段,但發現有錯,重貼一次
不過這個是在0102及0101兩者不可重複的狀況下才適用(我想應該不會重複才對,看起來像是複合主建)
也就是說如果再增加michael 0102或michael 0101,這樣就沒辦法用上面的語法來比對了... :wink: [/code]