不同的命令不起作用

时间:2017-06-08 20:51:55

标签: sql database oracle oracle11g distinct

这是命令:

SELECT DISTINCT T.TRIP_ID, T.TRIP_NAME, T.STATE, T.TYPE, S.TRIP_ID, S.TRIP_NAME

FROM TRIP T, TRIP S

WHERE T.STATE = 'NH'

AND T.TYPE = 'Hiking'

AND T.TRIP_ID < S.TRIP_ID

ORDER BY T.TRIP_NAME;

我应该得到大约6个结果但不知何故我得到298个重复结果。这段代码有什么问题?

正确的结果(6个条目)

Correct result

我的结果(前几个条目)总计298个条目

enter image description here

3 个答案:

答案 0 :(得分:1)

DISTINCT关键字对其后面的所有选择列表项进行操作,而不仅仅是下一个立即列。因此,在您的情况下,当考虑所有列时,它是(或将会)删除重复项。您显示的结果在所有列中都是单独的。

答案 1 :(得分:1)

我不确定你为什么要在这个例子中进行自我加入。但是如果你想要新罕布什尔州不同的旅行名称涉及徒步旅行,请执行以下操作:

navigator.serviceWorker.addEventListener('message', (e) => {
    console.log('msg recd in main script', e.data);
    e.source.postMessage('sending back to sw');
});
return navigator.serviceWorker.register(
    'sw.js'
).then((r) => {
    // navigator.serviceWorker.ready.then((r) => { // This had been necessary at some point in my testing (with r.active.postMessage), but not working for me atm...
        // Sending a subsequent message
        const messageChannel = new MessageChannel();
        messageChannel.port1.onmessage = (e) => {
            if (e.data.error) {
                console.log('err', e.data.error);
            } else {
                console.log('data', e.data);
            }
        };
        navigator.serviceWorker.controller.postMessage('sending to sw', [messageChannel.port2]);
    // });
});

答案 2 :(得分:0)

按照惯例,你有一个缺失的连接条件。