mysql查询显示不正确的行

时间:2013-11-22 05:24:53

标签: mysql

我有一个查询,目前只应显示一行。然而,它以某种方式显示4行作为其结果集,即使1)表中只有三行开始2)只有一行符合查询条件。

我希望有人可能知道我对这个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

1 个答案:

答案 0 :(得分:2)

在您的查询中,您错过了JOINING表的customer_smsnumbers子句。与sms_messages.send_sms_toid = sms_recipients.smsuser_id类似,您需要使用connects sms_messagescustomer_smsnumbers表或sms_recipientscustomer_smsnumbers表连接的连接子句。

如果没有连接子句,其他(非预期​​)记录将包含在结果中。