亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 4979 | 回復(fù): 7
打印 上一主題 下一主題

如何通過(guò)sql查詢(xún)出如下結(jié)果(不要用存儲(chǔ)過(guò)程) [復(fù)制鏈接]

求職 : Linux運(yùn)維
論壇徽章:
10
丑牛
日期:2013-11-22 14:59:41數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-08-13 06:20:0015-16賽季CBA聯(lián)賽之山西
日期:2016-08-03 10:35:38數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-07-31 06:20:002016科比退役紀(jì)念章
日期:2016-06-27 14:08:14數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-06-02 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-05-20 15:06:2215-16賽季CBA聯(lián)賽之深圳
日期:2016-01-29 16:27:402015亞冠之阿爾艾因
日期:2015-09-08 16:35:3615-16賽季CBA聯(lián)賽之北京
日期:2017-03-28 18:45:36
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2016-05-27 17:38 |只看該作者 |倒序?yàn)g覽
目前有2張表A表和B表;B表中的數(shù)據(jù)是固定不變的;但A表中的數(shù)據(jù)是可變的,但只可能出現(xiàn)2種情況;

1.A表中數(shù)據(jù)可能有如下兩種情況,為方便描述,記為A1表和A2表;

A1表中數(shù)據(jù)內(nèi)容:
a   1   1
b   1   2


A2表中數(shù)據(jù)內(nèi)容:
b   1   2

B表中數(shù)據(jù)內(nèi)容:
a   0   0

2. 現(xiàn)通過(guò)A和B表進(jìn)行聯(lián)表查詢(xún),

  (1)如果查詢(xún)時(shí),發(fā)現(xiàn)A表中的內(nèi)容是A1時(shí),那么希望查詢(xún)結(jié)果為:
  a  1  1
  b  1  2


  (2)如果查詢(xún)時(shí),發(fā)現(xiàn)A表中的內(nèi)容是A2時(shí),那么希望查詢(xún)結(jié)果為:
  a   0  0
  b   1  2


如果用sql查詢(xún)(不要存儲(chǔ)過(guò)程)實(shí)現(xiàn)2的結(jié)果,該怎么寫(xiě)呢?謝謝!

求職 : Linux運(yùn)維
論壇徽章:
10
丑牛
日期:2013-11-22 14:59:41數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-08-13 06:20:0015-16賽季CBA聯(lián)賽之山西
日期:2016-08-03 10:35:38數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-07-31 06:20:002016科比退役紀(jì)念章
日期:2016-06-27 14:08:14數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-06-02 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-05-20 15:06:2215-16賽季CBA聯(lián)賽之深圳
日期:2016-01-29 16:27:402015亞冠之阿爾艾因
日期:2015-09-08 16:35:3615-16賽季CBA聯(lián)賽之北京
日期:2017-03-28 18:45:36
2 [報(bào)告]
發(fā)表于 2016-05-27 17:39 |只看該作者
目前有2張表A表和B表;B表中的數(shù)據(jù)是固定不變的;但A表中的數(shù)據(jù)是可變的,但只可能出現(xiàn)2種情況;

1.A表中數(shù)據(jù)可能有如下兩種情況,為方便描述,記為A1表和A2表;

A1表中數(shù)據(jù)內(nèi)容:
a   1   1
b   1   2

A2表中數(shù)據(jù)內(nèi)容:
b   1   2

B表中數(shù)據(jù)內(nèi)容:
a   0   0

2. 現(xiàn)通過(guò)A和B表進(jìn)行聯(lián)表查詢(xún),

  (1)如果查詢(xún)時(shí),發(fā)現(xiàn)A表中的內(nèi)容是A1時(shí),那么希望查詢(xún)結(jié)果為:
  a  1  1
  b  1  2

  (2)如果查詢(xún)時(shí),發(fā)現(xiàn)A表中的內(nèi)容是A2時(shí),那么希望查詢(xún)結(jié)果為:
  a   0  0
  b   1  2


如果用sql查詢(xún)(不要存儲(chǔ)過(guò)程)實(shí)現(xiàn)2的結(jié)果,該怎么寫(xiě)呢?謝謝!

論壇徽章:
93
2015年辭舊歲徽章
日期:2019-10-10 10:51:15CU大;照
日期:2014-02-21 14:21:56CU十二周年紀(jì)念徽章
日期:2020-10-15 16:55:55CU大;照
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大;照
日期:2019-10-10 10:55:38季節(jié)之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季節(jié)之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
3 [報(bào)告]
發(fā)表于 2016-05-30 10:49 |只看該作者
夏寥寥 發(fā)表于 2016-05-27 17:39
目前有2張表A表和B表;B表中的數(shù)據(jù)是固定不變的;但A表中的數(shù)據(jù)是可變的,但只可能出現(xiàn)2種情況;

1.A表中 ...


如果可以用動(dòng)態(tài)語(yǔ)句可以試試這個(gè):
  1. mysql> select * from a;
  2. +----+----+----+
  3. | c1 | c2 | c3 |
  4. +----+----+----+
  5. | a  | 1  | 1  |
  6. | b  | 1  | 2  |
  7. +----+----+----+
  8. 2 rows in set

  9. mysql> select * from b;
  10. +----+----+----+
  11. | c1 | c2 | c3 |
  12. +----+----+----+
  13. | a  | 0  | 0  |
  14. +----+----+----+
  15. 1 row in set

  16. mysql> select @count_a := count(*) from a;
  17. select @str := if (@count_a = 2, 'select * from a', 'select * from b union all select * from a');
  18. prepare st from @str;
  19. execute st;
  20. deallocate prepare st;
  21. +----------------------+
  22. | @count_a := count(*) |
  23. +----------------------+
  24. |                    2 |
  25. +----------------------+
  26. 1 row in set

  27. +-------------------------------------------------------------------------------------------+
  28. | @str := if (@count_a = 2, 'select * from a', 'select * from b union all select * from a') |
  29. +-------------------------------------------------------------------------------------------+
  30. | select * from a                                                                           |
  31. +-------------------------------------------------------------------------------------------+
  32. 1 row in set

  33. Query OK, 0 rows affected
  34. Statement prepared

  35. +----+----+----+
  36. | c1 | c2 | c3 |
  37. +----+----+----+
  38. | a  | 1  | 1  |
  39. | b  | 1  | 2  |
  40. +----+----+----+
  41. 2 rows in set

  42. Query OK, 0 rows affected

  43. mysql>

復(fù)制代碼


  1. mysql> select * from a;
  2. +----+----+----+
  3. | c1 | c2 | c3 |
  4. +----+----+----+
  5. | b  | 1  | 2  |
  6. +----+----+----+
  7. 1 row in set

  8. mysql> select * from b;
  9. +----+----+----+
  10. | c1 | c2 | c3 |
  11. +----+----+----+
  12. | a  | 0  | 0  |
  13. +----+----+----+
  14. 1 row in set

  15. mysql> select @count_a := count(*) from a;
  16. select @str := if (@count_a = 2, 'select * from a', 'select * from b union all select * from a');
  17. prepare st from @str;
  18. execute st;
  19. deallocate prepare st;
  20. +----------------------+
  21. | @count_a := count(*) |
  22. +----------------------+
  23. |                    1 |
  24. +----------------------+
  25. 1 row in set

  26. +-------------------------------------------------------------------------------------------+
  27. | @str := if (@count_a = 2, 'select * from a', 'select * from b union all select * from a') |
  28. +-------------------------------------------------------------------------------------------+
  29. | select * from b union all select * from a                                                 |
  30. +-------------------------------------------------------------------------------------------+
  31. 1 row in set

  32. Query OK, 0 rows affected
  33. Statement prepared

  34. +----+----+----+
  35. | c1 | c2 | c3 |
  36. +----+----+----+
  37. | a  | 0  | 0  |
  38. | b  | 1  | 2  |
  39. +----+----+----+
  40. 2 rows in set

  41. Query OK, 0 rows affected

  42. mysql>
復(fù)制代碼
不然,可以用這個(gè)試試:

  1. mysql> select * from a;
  2. +----+----+----+
  3. | c1 | c2 | c3 |
  4. +----+----+----+
  5. | b  | 1  | 2  |
  6. +----+----+----+
  7. 1 row in set

  8. mysql> select * from b;
  9. +----+----+----+
  10. | c1 | c2 | c3 |
  11. +----+----+----+
  12. | a  | 0  | 0  |
  13. +----+----+----+
  14. 1 row in set

  15. mysql> select c1, c2, c3
  16. from
  17. (
  18.         select *, 'b' as tb, (select count(*) from a) as cnt from b
  19.         union all
  20.         select *, 'a', (select count(*) from a) from a
  21. ) as tmp
  22. where (tb, cnt) in (('b', 1), ('a', 1), ('a', 2));
  23. +----+----+----+
  24. | c1 | c2 | c3 |
  25. +----+----+----+
  26. | a  | 0  | 0  |
  27. | b  | 1  | 2  |
  28. +----+----+----+
  29. 2 rows in set

  30. mysql>

復(fù)制代碼

  1. mysql> select * from a;
  2. +----+----+----+
  3. | c1 | c2 | c3 |
  4. +----+----+----+
  5. | a  | 1  | 1  |
  6. | b  | 1  | 2  |
  7. +----+----+----+
  8. 2 rows in set

  9. mysql> select * from b;
  10. +----+----+----+
  11. | c1 | c2 | c3 |
  12. +----+----+----+
  13. | a  | 0  | 0  |
  14. +----+----+----+
  15. 1 row in set

  16. mysql> select c1, c2, c3
  17. from
  18. (
  19.         select *, 'b' as tb, (select count(*) from a) as cnt from b
  20.         union all
  21.         select *, 'a', (select count(*) from a) from a
  22. ) as tmp
  23. where (tb, cnt) in (('b', 1), ('a', 1), ('a', 2));
  24. +----+----+----+
  25. | c1 | c2 | c3 |
  26. +----+----+----+
  27. | a  | 1  | 1  |
  28. | b  | 1  | 2  |
  29. +----+----+----+
  30. 2 rows in set

  31. mysql>
復(fù)制代碼

求職 : Linux運(yùn)維
論壇徽章:
10
丑牛
日期:2013-11-22 14:59:41數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-08-13 06:20:0015-16賽季CBA聯(lián)賽之山西
日期:2016-08-03 10:35:38數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-07-31 06:20:002016科比退役紀(jì)念章
日期:2016-06-27 14:08:14數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-06-02 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-05-20 15:06:2215-16賽季CBA聯(lián)賽之深圳
日期:2016-01-29 16:27:402015亞冠之阿爾艾因
日期:2015-09-08 16:35:3615-16賽季CBA聯(lián)賽之北京
日期:2017-03-28 18:45:36
4 [報(bào)告]
發(fā)表于 2016-05-30 14:01 |只看該作者
select B.column1,B.column2,B.column3  from B
join A on B.colum1 = A.column1
union
select A.column1, nvl(B.column2,A.column2),nvl(B.column3,A.column3)  from A
left join B on B.colum1 = A.column1

求職 : Linux運(yùn)維
論壇徽章:
10
丑牛
日期:2013-11-22 14:59:41數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-08-13 06:20:0015-16賽季CBA聯(lián)賽之山西
日期:2016-08-03 10:35:38數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-07-31 06:20:002016科比退役紀(jì)念章
日期:2016-06-27 14:08:14數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-06-02 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-05-20 15:06:2215-16賽季CBA聯(lián)賽之深圳
日期:2016-01-29 16:27:402015亞冠之阿爾艾因
日期:2015-09-08 16:35:3615-16賽季CBA聯(lián)賽之北京
日期:2017-03-28 18:45:36
5 [報(bào)告]
發(fā)表于 2016-05-30 14:06 |只看該作者
select B.column1,B.column2,B.column3  from B
join A on B.colum1 = A.column1
union all
select A.column1, nvl(B.column2,A.column2),nvl(B.column3,A.column3)  from A
left join B on B.colum1 = A.column1

求職 : Linux運(yùn)維
論壇徽章:
10
丑牛
日期:2013-11-22 14:59:41數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-08-13 06:20:0015-16賽季CBA聯(lián)賽之山西
日期:2016-08-03 10:35:38數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-07-31 06:20:002016科比退役紀(jì)念章
日期:2016-06-27 14:08:14數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-06-02 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-05-20 15:06:2215-16賽季CBA聯(lián)賽之深圳
日期:2016-01-29 16:27:402015亞冠之阿爾艾因
日期:2015-09-08 16:35:3615-16賽季CBA聯(lián)賽之北京
日期:2017-03-28 18:45:36
6 [報(bào)告]
發(fā)表于 2016-05-30 20:34 |只看該作者
回復(fù) 3# seesea2517

謝謝大神!兩種方法都能查到相應(yīng)的結(jié)果!


   

論壇徽章:
93
2015年辭舊歲徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年紀(jì)念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大;照
日期:2019-10-10 10:55:38季節(jié)之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季節(jié)之章:冬
日期:2019-10-10 10:57:17CU大;照
日期:2014-02-21 14:22:52CU大;照
日期:2014-03-13 10:40:30CU大;照
日期:2014-02-21 14:23:15
7 [報(bào)告]
發(fā)表于 2016-05-31 10:36 |只看該作者
回復(fù) 6# 夏寥寥


    客氣,不是什么大神,謬贊。你的方法也不錯(cuò)啊,nvl 在 mysql 里我改成 ifnull 來(lái)測(cè)試效果不錯(cuò)。我不知道你這兩個(gè)表還有數(shù)據(jù)相關(guān)的,想不到用連接的這個(gè)方法了。

求職 : Linux運(yùn)維
論壇徽章:
10
丑牛
日期:2013-11-22 14:59:41數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-08-13 06:20:0015-16賽季CBA聯(lián)賽之山西
日期:2016-08-03 10:35:38數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-07-31 06:20:002016科比退役紀(jì)念章
日期:2016-06-27 14:08:14數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-06-02 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-05-20 15:06:2215-16賽季CBA聯(lián)賽之深圳
日期:2016-01-29 16:27:402015亞冠之阿爾艾因
日期:2015-09-08 16:35:3615-16賽季CBA聯(lián)賽之北京
日期:2017-03-28 18:45:36
8 [報(bào)告]
發(fā)表于 2016-05-31 17:00 |只看該作者
回復(fù) 7# seesea2517

我寫(xiě)錯(cuò)了!nvl是oracle里的,ifnull才是mysql中的! 謝謝!

   
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP