我有2个表,每个表包含10个整数字段。我需要从table2中检索记录,其中如果table1中的任何一列中存在其中一个字段值。例如;
因此,如果我有一个包含1的变量(table1中的记录的id),我需要sql来检索记录2&表2中的3表示因为表2中的任何一个猫场都存在3400或3500.希望这是有道理的; - )
答案 0 :(得分:1)
这可能是最有效的方式,虽然写起来有点麻烦:
import Ember from 'ember';
function initialize() {
var $ajax = Ember.$.ajax;
Ember.RSVP.when = function(promise, label) {
return new Ember.RSVP.Promise(promise.then.bind(promise), label);
};
return Ember.$.ajax = function() {
return Ember.RSVP.when($ajax.apply(Ember.$, arguments), '$.ajax');
};
};
var PromiseAdapterInitializer = {
name: 'promise-adapter',
initialize: initialize
};
export {initialize};
export default PromiseAdapterInitializer;
更重要的是,您的数据结构很糟糕。尝试将多列用作数组通常是SQL中的一个坏主意。您需要每个这样的联结表,其中每个ID和类别有一行。如果你有这样的数据结构,那么查询将更容易编写,并且可能具有更好的性能。
答案 1 :(得分:0)
WITH Table1Ids AS (
SELECT ID, cat
FROM Table1
CROSS APPLY (
VALUES (cat0), (cat1), (cat2), (cat3), (cat4)
) AS CA1(cat)
)
,Table2Ids AS (
SELECT ID, cat
FROM Table2
CROSS APPLY (
VALUES (cat0), (cat1), (cat2), (cat3), (cat4)
) AS CA1(cat)
)
,MatchingRecords AS (
SELECT DISTINCT Table1Ids.ID AS Table1ID
,Table2Ids.ID AS Table2ID
FROM Table1Ids
INNER JOIN Table2Ids
ON Table2Ids.cat = Table1Ids.cat
)
SELECT Table2.*
FROM MatchingRecords
INNER JOIN Table2
ON Table2.ID = MatchingRecords.Table2ID
WHERE MatchingRecords.Table1ID = @TheIDYouAreLookingFor