0

これら2つのMySQLクエリを組み合わせる方法はありますか?現在、並べ替えやページ付けなどが非常に困難になっています。

SELECT *
FROM (`lb_sales`)
WHERE `recurring` =  '0'
AND `created` >= '2012-10-01 00:00:00'
AND `created` <= '2012-10-30 23:59:59'
AND `status` =  'pending'
AND `type` =  'sale'
AND `account_id` =  '2'
ORDER BY `id` ASC
LIMIT 5;

SELECT *
FROM (`lb_sales`)
WHERE `recurring` =  '1'
AND `created` <= '2012-10-30 23:59:59'
AND `status` =  'pending'
AND `type` =  'sale'
AND `account_id` =  '2'
ORDER BY `id` ASC
LIMIT 5;
4

5 に答える 5

1

試してみてくださいUNION ALL。列が揃っていることを確認してください。また、は使用しないでくださいSELECT *。常に列リストを指定してください。

SELECT col1, col2, ...
FROM (`lb_sales`)
WHERE `recurring` =  '0'
AND `created` >= '2012-10-01 00:00:00'
AND `created` <= '2012-10-30 23:59:59'
AND `status` =  'pending'
AND `type` =  'sale'
AND `account_id` =  '2'
ORDER BY `id` ASC
LIMIT 5
UNION ALL
SELECT col1, col2, ...
FROM (`lb_sales`)
WHERE `recurring` =  '1'
AND `created` <= '2012-10-30 23:59:59'
AND `status` =  'pending'
AND `type` =  'sale'
AND `account_id` =  '2'
ORDER BY `id` ASC
LIMIT 5;
于 2012-12-03T15:17:40.297 に答える
1
SELECT *
FROM (`lb_sales`)
WHERE
(
`recurring` =  '0'
AND `created` >= '2012-10-01 00:00:00'
AND `created` <= '2012-10-30 23:59:59'
)
OR
( 
`recurring` =  '1'
AND `created` <= '2012-10-30 23:59:59'
)
AND `status` =  'pending'
AND `type` =  'sale'
AND `account_id` =  '2'
ORDER BY `id` ASC
LIMIT 5;

かっこはあなたの友達の若いパドワンです。もちろん、どちらかの基準を満たすレコードが必要だと思います。

于 2012-12-03T15:20:28.950 に答える
0
SELECT *
FROM (`lb_sales`)
WHERE ((`recurring` =  '0'
AND `created` >= '2012-10-01 00:00:00'
AND `created` <= '2012-10-30 23:59:59')
OR (`recurring` =  '1'
AND `created` <= '2012-10-30 23:59:59'))
AND `status` =  'pending'
AND `type` =  'sale'
AND `account_id` =  '2'
ORDER BY `id` ASC
LIMIT 10;
于 2012-12-03T15:18:29.357 に答える
0

試す:

SELECT *  FROM (`lb_sales`)
WHERE (`recurring` =  '0' AND `created` >= '2012-10-01 00:00:00'
 AND `created` <= '2012-10-30 23:59:59' ) 
OR (`recurring` =  '1' AND `created` <= '2012-10-30 23:59:59')    
AND `status` =  'pending'
AND `type` =  'sale'
AND `account_id` =  '2'
ORDER BY `id` ASC
LIMIT 5;
于 2012-12-03T15:19:26.270 に答える
0
SELECT *
FROM (`lb_sales`)
WHERE ( `recurring` =  '0' 
AND `created` >= '2012-10-01 00:00:00'
AND `created` <= '2012-10-30 23:59:59'
AND `status` =  'pending'
AND `type` =  'sale'
AND `account_id` =  '2' ) 
OR  (`recurring` =  '1'
AND `created` <= '2012-10-30 23:59:59'
AND `status` =  'pending'
AND `type` =  'sale'
AND `account_id` =  '2' )
ORDER BY `id` ASC
LIMIT 5;

多分このようなものですが、構文が正しいかどうかはわかりません

于 2012-12-03T15:20:26.690 に答える