我将100个广告文字存储在一个表中,它们可以是预定的,也可以是默认的。我想为每个cust_id返回一条记录。
我有两个选择sql查询-第一个查询客户是否有预定文本,第二个查询默认文本。
SELECT
id, cust_id
FROM
texts
WHERE
over18 = FALSE
AND now()
BETWEEN ad_start_date
AND ad_end_date)
UNION ALL (
SELECT
id, cust_id
FROM
texts
WHERE
over18 = FALSE
AND texts.default = TRUE
ORDER BY
created_at DESC)
问题在于,第二个选择对于每个cust_id返回多个记录。
答案 0 :(得分:0)
如果需要基于集合的结果,则应使用UNION
而不是UNION ALL
。
您可以阅读有关其差异here的更多信息。另一种方法是使用DISTINCT
子句。
答案 1 :(得分:0)
您似乎想要train_data = lgb.Dataset(X_train, label=y_train, categorical_feature=cat_features)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)
param = {'num_trees': 4000, 'objective':'binary', 'metric': 'auc'}
bst = lgb.train(param, train_data, valid_sets=[test_data], early_stopping_rounds=100)
:
distinct on