MYSQL从具有特定条件的两个表中选择值

时间:2014-11-24 08:52:15

标签: mysql

我有两张桌子。一个是查询表,其中包含所有类型的查询,一个是 query_insert ,其中仅包含查询插入记录。 如下所示:

    **query**            **query_insert**
    1 query_id           1 id
    2 query_cons         2 query_id
    3 title              3 *insert_date*
    4 name               4 insert_time
    5.............
    ...........
    .....
    9 *current_status*
    10 return_date

我想从查询中选择所有那些将current_status设置为fresh并且insert_date为today(在query_insert中)的查询。

我试过这个但没有工作。

$result= mysql_query("SELECT query_insert.*, query.* 
                      FROM query_insert,query 
                      WHERE query_insert.insert_date=$today && 
                            query.current_status='Fresh' ");

在此查询中,$ today变量包含今天的日期。

请帮帮我。 谢谢。

5 个答案:

答案 0 :(得分:0)

试试这个:

SELECT * FROM query q
INNER JOIN query_insert qi ON q.query_id = qi.query_id
WHERE insert_date = CURRENT_DATE()
AND current_status = 'Fresh'

答案 1 :(得分:0)

您需要将两个表连接到链接它们的属性query_id。 你可以尝试这样的事情:

$result= mysql_query("SELECT query_insert.*, query.* 
                      FROM query_insert 
                          LEFT JOIN query 
                                   ON query.query_id = query_insert.query_id
                      WHERE query_insert.insert_date=$today && 
                            query.current_status='Fresh' ");

答案 2 :(得分:0)

试试这个:

SELECT *
FROM query q
JOIN query_insert i
ON q.id = i.query_id
WHERE q.current_status = 'Fresh'
AND i.insert_date = now()

或者,如果query_insert中有更多关于同一查询的行:

SELECT *
FROM query q
WHERE EXISTS(
   SELECT 'insert'
   FROM query_insert i
   WHERE q.id = i.query_id
   AND i.insert_date = now()
)
AND q.current_status = 'Fresh'

答案 3 :(得分:0)

请更改您的查询,如下所示:

SELECT query_insert.*, query.* 
FROM query_insert,query 
WHERE query_insert.insert_date = $today 
AND query.current_status='Fresh' 
AND query.query_id = query_insert.query_id

答案 4 :(得分:0)

删除其中一个“&& query.current_status ='Fresh'”以检查这是否真的是不起作用的日期子句。

一旦您确认检查了您的变量和列是日期而非日期时间。如果列是datetime,那么而不是使它= $ today使它成为一个范围,因此insert_date> = $ today和insert_date< = tomorrow<