2013-11-22 43 views
0

我有一個查詢,目前應該只顯示一行。然而,它以某種方式顯示4行作爲其結果集,即使1)表中只有三行以2行開始2)只有一行匹配查詢條件。mysql query顯示不正確的行

我希望有人會知道我在做什麼錯這個MySQL查詢

我的數據庫表結構如下

 
smsid (int, auto increment), sms_type (text), sms_status (enum 'pending',sent'), 
sms_error (test), sms_message(text), sms_mp3file (varchar 50), 
sms_sendon (datetime), send_sms_toid (int 5) 

我的表項爲使(下表的順序上述列)

 
31 | mp3 | pending | | | helloworld.mp3 | 2013-11-20 16:16:00 | 7 

30 | text | sent | | hello test | | 2013-11-18 13:12:00 | 8 

29 | voice | sent | | testing 123 | | 2013-11-18 10:05:00 | 18 

我的查詢是如下

SELECT sms_messages.*, sms_recipients.cust_profid, sms_recipients.sms_cellnumber, 
customer_smsnumbers.sms_number, customer_smsnumbers.sms_number 
FROM sms_messages, sms_recipients, customer_smsnumbers 
WHERE sms_messages.sms_type='mp3' AND sms_messages.sms_sendon <= '2013-11-21' 
AND sms_messages.sms_status='pending' AND 
sms_messages.send_sms_toid = sms_recipients.smsuser_id 

回答

2

在您的查詢中,您錯過了customer_smsnumbers表的JOINING子句。與sms_messages.send_sms_toid = sms_recipients.smsuser_id類似,您需要有一個連接子句,其中connects sms_messagescustomer_smsnumbers表或連接sms_recipientscustomer_smsnumbers表。

如果沒有連接子句,則其他(無意)記錄包含在結果中。

+0

+1,但我真的很喜歡他們責怪MySQL不顯示行 –