说我有三个表称为“用户”,“桥”和“卡”:从两张表中拉出所有数据,从第三行取出单行?
| ID | FirstName | LastName |
|----|------------|----------|
| 1 | David | Gray |
| 2 | John | Smith |
| ID | CardNumber |
|----|------------|
| 1 | 101 |
| 2 | 102 |
| CardNumber | Value |
|------------|-------|
| 101 | ABC |
| 101 | 1600 |
| 101 | 1700 |
| 101 | 1800 |
| 102 | DEF |
| 102 | 1699 |
| 102 | 1799 |
| 102 | 1899 |
我想写一个查询,执行以下操作:
选择姓和姓氏从表1,CardNumber从表2和价值从表3中,但我只想为每个用户单个最高号(边注:我很高兴地抢CardNumber从卡,只要它相匹配)
所以我的查询将返回
David, Gray, 101, 1800
John, Smith, 102, 1899
但我不能工作,如何做,在MS-SQL。这是我到目前为止:
SELECT
Users.ID,
Users.FirstName,
Users.LastName,
Bridge.CardNumber,
Cards.Value
FROM Users
LEFT JOIN Bridge ON Users.ID = Bridge.ID
LEFT JOIN Cards ON Bridge.CardNumber = Cards.CardNumber
WHERE
Cards.Value = (SELECT Cards.Value FROM Cards ORDER BY Cards.Value DESC)
返回单个用户,而不是所有用户。删除WHERE
子句会按照我的预期返回所有用户,但我不确定如何取得中间立场。
我创建了一个SQLite fiddle here,这是非常接近(我可以从那里转口味)
我可以在这里做什么?
是值可以是ABC?防守? –
@ShakeerMirza:不需要,它需要是一个数字,因为结果最终打印在只接受数字的磁条上 – Grayda