我有一个查询,目前只应显示一行。然而,它以某种方式显示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
答案 0 :(得分:2)
在您的查询中,您错过了JOINING
表的customer_smsnumbers
子句。与sms_messages.send_sms_toid = sms_recipients.smsuser_id
类似,您需要使用connects sms_messages
与customer_smsnumbers
表或sms_recipients
与customer_smsnumbers
表连接的连接子句。
如果没有连接子句,其他(非预期)记录将包含在结果中。