mysql - 从不同的列和两个表中选择数据

标签 mysql select join

我已经问过(并解决了)一些接近的事情 here 但现在更复杂了。我有相同的 BID 表:

Id_auction        bidder_1      winner_1    bidder_2    winner_2    item
  1                Alice           1          Ben         1          cup
  2               Charles          0          Alice       1          mug
  3                 Ben            1          Charles     1          pen

但是现在我想加入另一个表USD的信息

Id_auction         USD
1                  100
2                  150
3                   50

如果投标人是赢家,则值为 1,如果不是赢家,则值为 0。因此,在第一次拍卖中,Alice 和 Ben 是赢家,在第二次拍卖中,只有 Alice 赢了。我需要一个 MySQL 查询,所以结果将是这样的:

  Id_auction       bidder        item      bidder_number   USD
  1                Alice         cup            1          100
  1                Ben           cup            2          100
  2                Alice         mug            2          150
  3                Ben           pen            1           50
  3                Charles       pen            2           50

谢谢!

最佳答案

只需使用此表 JOIN USD:

SELECT sub.*, USD.USD
FROM
(
  SELECT 
    t1.id_auction,
    t2.bidder_1 AS bidder,
    t2.item,
    1 AS bidder_number    
  FROM table1 t1
  INNER JOIN table1 t2  ON t1.id_auction = t2.id_auction
                       AND t2.winner_1 = 1
  UNION ALL
  SELECT 
    t1.id_auction,
    t2.bidder_2 AS bidder,
    t2.item,
    2                    
  FROM table1 t1
  INNER JOIN table1 t2  ON t1.id_auction = t2.id_auction
                       AND t2.winner_2 = 1
) AS sub
INNER JOIN USD ON sub.id_auction = USD.id_auction
ORDER BY id_auction, bidder;

Updated SQL Fiddle Demo

| ID_AUCTION |  BIDDER | ITEM | BIDDER_NUMBER | USD |
-----------------------------------------------------
|          1 |   Alice |  cup |             1 | 100 |
|          1 |     Ben |  cup |             2 | 100 |
|          2 |   Alice |  mug |             2 | 150 |
|          3 |     Ben |  pen |             1 |  50 |
|          3 | Charles |  pen |             2 |  50 |

关于mysql - 从不同的列和两个表中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15680774/

相关文章:

mysql - SQL查询未显示所需结果

MySQL GROUP BY ...具有相同字段的不同值

php - mySQL 字符串匹配

mysql - 在 MySQL 中将 JSON 数据存储为文本

c# - sql WHERE {params} 中可以有很多参数吗?

php - MYSQL:计算另一个表中与第一个表中的行相对应的行数

mysql - 希望 SQL Server CONSTRAINT 不允许特定的特定字符串

php - 自动完成功能的专业搜索查询细化

php - 选择所有匹配的两个字段并用 mysql 按这两个字段分组

c - 使用 select() 检测 UIO 设备文件上的 block