我有2個表由membership.ID和memberDues.memberID連接。成員資格表有一列firstLast,對每一行都是唯一的。如果我有firstLast的值,那麼我應該能夠找到membership.ID並將其與memberDues.memberID進行比較。我使用下面的查詢,但它不工作:我可以使用子查詢來完成where子句嗎?
SELECT * FROM memberDues, membership
WHERE memberID =
(SELECT ID FROM membership
WHERE firstLast = 'Jim Smith')
ORDER BY payDate DESC
LIMIT 1
結果得到正確memberDues.memberID並從其行其他數據,但拉不相關的數據從會員表,其中甚至ID設置錯誤。查詢有什麼問題?
你正在做一個笛卡兒積...交叉連接... m行和n行在resultset中產生m * n行。然後你說,嘿,只要給我從排列的所有 – Drew
1行,選擇*與聯接傾向於提供一些不受歡迎的列。很好的快速查詢,但乾淨的生產 – Drew