0
我們有一個遺留表Prop
,根據value
的符號將告訴是否引用PropLong
或PropShort
表。要清除Prop.value > 0
是否需要PropShort
否則PropLong
。需要幫助建立MySQL查詢 - 動態數據
現在我想建立一個基於最終值的動態查詢。我不知道如何做到這一點。我已經有一個查詢(隨意對這個太評論),將拉動最終值回(到str_value
,但我不知道如何修改它,這樣我可以進一步延長str_value
我的查詢。
SELECT *,
IFNULL(PropShort.str, PropLong.str) AS str_value FROM Prop
LEFT JOIN PropShort ON sid=Prop.value
LEFT JOIN PropLong ON lid=-Prop.value
現在在哪裏呢WHERE PropShort.str=%s OR PropLong.str=%s
來到這個?我特別關注在多箇中用OR查詢(即WHERE PropShort.str=%s OR PropLong.str=%s OR behavior="foo"
)
表定義
CREATE TABLE `Prop` (
`propId` int(10) unsigned NOT NULL,
`value` int(11) NOT NULL,
`behavior` varbinary(255) NOT NULL,
KEY `propId` (`propId`),
) ENGINE=InnoDB;
CREATE TABLE `PropLong` (
`lid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`str` blob NOT NULL,
PRIMARY KEY (`lid`)
) ENGINE=InnoDB;
CREATE TABLE `PropShort` (
`sid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`str` varbinary(255) NOT NULL,
PRIMARY KEY (`sid`)
) ENGINE=InnoDB;
這將工作,如果唯一的約束是這樣的。不幸的是,它不是。我會在我的文章中澄清這一點。 – rh0dium 2014-09-03 03:52:28
@ rh0dium,所以......你首先考慮的是(道具短/長有%s)或者(道具可以行爲='foo'),那麼抓住所有符合條件的記錄?完全不同,並顯示一些樣本數據爲這個和未來將有助於澄清這一點。 – DRapp 2014-09-03 10:20:17
否 - 道具短/長是次要考慮因素。非常感謝你指出的問題正在幫助我。我還沒到那裏,但我知道你要去哪裏 – rh0dium 2014-09-03 14:04:52