我要使用以下SQL从mySQL查询一组数据:
SELECT * FROM orders
WHERE datediff((now()), (SELECT datepurchased FROM orders WHERE email = 'me@example.com')) <= 1
但问题是我得到了#1242 - Subquery returns more than 1 row
的错误,因为语句SELECT datepurchased FROM orders WHERE email = 'me@example.com'
返回了多行,这是完全正确的。
我想要的想法是从orders
表中进行选择,以使当前时间与datepurchased
字段之间的日期差异为<=1
,并email
字段等于me@example.com
。
orders
表格中可能有很多行,其电子邮件字段为me@example.com
。我只是想找出所有这些行email
字段等于me@example.com
,datepurchased
小于或等于1。
我应该如何表达我的SQL来实现这一目标?
答案 0 :(得分:5)
在这种情况下不需要子查询。简单地:
SELECT *
FROM orders
WHERE email = 'me@example.com'
AND DATEDIFF(NOW(), datepurchased) <= 1;
答案 1 :(得分:2)
您不需要子查询,只需在orders
查询中放置两个条件。
SELECT *
FROM orders
WHERE datediff(now(), datepurchased) <= 1
AND email = 'me@example.com'
我没试过,但看起来很简单。
答案 2 :(得分:2)
我认为你只想要一个包含两个条件的WHERE子句的普通SELECT:
SELECT * FROM orders
WHERE email = 'me@example.com')
AND datediff(now(), datepurchased) <= 1
答案 3 :(得分:2)
我想我错过了什么,但为什么你不能做到这一点?
SELECT * FROM orders
WHERE datediff(now(), datepurchased ) <= 1
and email = 'me@example.com'
答案 4 :(得分:0)
有什么问题
SELECT *
FROM orders
WHERE datediff(now(), datepurchased) <= 1
AND email = 'me@example.com'