我正在报道基础,我遇到了一个错误。我正在运行以下查询:
SELECT * FROM monday, tuesday WHERE games_won=3 AND games_drawn=1
收到此错误:
Column 'games_won' in where clause is ambiguous.
我知道这与两个具有相同字段名称的表有关,所以查询不接受它,但我只是不确定正确的SQL来修复它。
感谢。
答案 0 :(得分:3)
为查询提供正确的别名。为列提供特定表的别名
SELECT * FROM monday mon, tuesday tue
where mon.games_won=3 AND tue.games_drawn=1
答案 1 :(得分:3)
正如您所提到的,您的查询失败了,因为MySQL不知道要使用哪个games_won
列。
你可以明确地说出来:
SELECT * FROM monday, tuesday
WHERE monday.games_won=3 AND monday.games_drawn=1 AND tuesday.games_won=3 AND tuesday.games_drawn=1
但我怀疑这不会给你想要的行为。这将执行两个表的连接,如果你有:
Monday Tuesday
|id |games_won|games_drawn| |id |games_won|games_drawn|
|1 |3 |1 | |3 |3 |1 |
|2 |3 |1 | |4 |3 |1 |
这将给出:
Results
|id |games_won|games_drawn|id |games_won|games_drawn|
|1 |3 |1 |3 |3 |1 |
|1 |3 |1 |4 |3 |1 |
|2 |3 |1 |3 |3 |1 |
|2 |3 |1 |4 |3 |1 |
这是表的完全连接。
我假设您需要每个表中与WHERE匹配的行列表。在这种情况下,您可以使用UNION:
SELECT * FROM monday WHERE games_won=3 AND games_drawn=1
UNION
SELECT * FROM tuesday WHERE games_won=3 AND games_drawn=1
最后,每天都有一张桌子是不寻常的。您可以通过将日期存储在game_results表中来简化数据库:
game_results
id
games_won
games_drawn
day
这样可以更轻松地检查不同日期的结果。