0

次のクエリがあります。

SELECT * 
FROM users
WHERE id NOT 
IN (

SELECT user_id
FROM  `bids` 
WHERE DATE_SUB(  DATE_ADD( CURDATE( ) , INTERVAL 7 
DAY ) , INTERVAL 14 
DAY ) <= created
)
AND id NOT 
IN (

SELECT user_id
FROM coupon_used WHERE code = 'ACTNOW'
)
AND id
IN (

SELECT user_id
FROM accounts
)

テーブル内のすべてのユーザーを検索するのではなく、特定のユーザーを取得して検索したいだけです。ID 1,2,3,4,5 のユーザーのリストがあるように、これらのユーザーのみを検索したい

4

2 に答える 2

0

左外部結合を使用すると、クエリが簡素化され、パフォーマンスが向上することが期待されます

SELECT users.* 
FROM users
LEFT OUTER JOIN bids on bids.user_id = users.id AND DATE_SUB(DATE_ADD(CURDATE(), INTERVAL 7 DAY), INTERVAL 14 DAY) <= bids.created
LEFT OUTER JOIN coupon_used on coupon_used.user_id = users.id AND coupon_used.code = 'ACTNOW'
INNER JOIN accounts on accounts.user_id = users.id
WHERE bids.id is null AND coupon_used.id is null
    AND users.id in (1,2,3,4,5)
于 2013-03-01T17:53:09.513 に答える
0

WHEREを使用して句を追加するだけですIN()

SELECT * 
FROM users
WHERE id IN(1,2,3,4,5)
于 2013-03-01T17:00:49.320 に答える