【发布时间】:2017-09-22 06:06:54
【问题描述】:
我在表中有记录,这些记录在destinationcountryid 字段中具有值,例如 638,101 和 -1。 -1 是默认值,如果没有匹配选择查询应该返回这条记录。
我在下面写了sql查询。
SELECT
externalid
FROM
mLookup.Addon_Spec_Tbl
WHERE
productid = 30046 AND keyid = 2 AND countryid = 638 AND clientid = 10018 AND subkeyid = 4 AND destinationcountryid IN(302,
-1)
ORDER BY
id DESC
LIMIT 1
在这里我没有得到正确的结果。 我的表架构如下
CREATE TABLE spec_tbl(
id SERIAL NOT NULL,
productid INTEGER NOT NULL,
keyid INTEGER,
subkeyid INTEGER,
externalid CHARACTER VARYING(100),
countryid INTEGER,
destinationcountryid INTEGER,
originid INTEGER,
destinationid INTEGER,
clientid INTEGER,
categoryid INTEGER,
created TIMESTAMP WITHOUT TIME zone DEFAULT NOW(),
modified TIMESTAMP WITHOUT TIME zone DEFAULT NOW(),
enabled BOOLEAN DEFAULT TRUE,
CONSTRAINT spec_tbl_pkey PRIMARY KEY(id))
示例插入
INSERT INTO spec_tbl(
productid, keyid, subkeyid, externalid, countryid, destinationcountryid, originid, destinationid, clientid, categoryid, remarks)
VALUES
(30046, 2, 4 , 'ABC', 638, 603, NULL, NULL, 10018, 25,'International Round Trip(include India) One Way Trip'),
(30046, 2, 4 , 'LMP', 638, 302, NULL, NULL, 10018, 25,'International Round Trip(include Bangladesh) One Way Trip'),
(30046, 2, 4 , 'KJP', 638, 208, NULL, NULL, 10018, 25,'International Round Trip(include Cuba) One Way Trip')
(30046, 2, 4 , 'XYZ', 638, -1, NULL, NULL, 10018, 25,'International Round Trip'),
;
我收到了回复,但它返回的 destinationcountryid 记录 = -1。 但是存在匹配的destinationcountryid = 302。我希望这会成为结果。
【问题讨论】:
-
我不知道你在这里问什么。如果该查询没有返回任何记录,并且您 100% 确定逻辑是正确的,那么您的数据就是问题所在。无论如何,如果您可以通过向我们展示示例数据以及预期输出来重新表述您的问题,这可能有助于澄清事情。
-
添加样本记录
-
通过限制条款我猜它是MySQL。请具体说明标签。
-
@PacoDePaco Postgres 也有一个
LIMIT。 -
它在 postgres 中,但这没关系。
标签: mysql database postgresql